Пользовательская рамка кнопки выглядит не так хорошо, как Round Rect UIButton

Я пытаюсь создать кадр пользовательской кнопки следующим образом:

UIBezierPath *stroke = [UIBezierPath bezierPathWithRoundedRect:self.bounds
                                                  cornerRadius:RECT_CORNECR_RADIUS];

[stroke stroke];

Но по какой-то причине угловые кривые выглядят мыслителями, чем стороны. Если вы посмотрите на фреймворк UIButton по умолчанию, он будет очень однородным. A - UIButton, B - пользовательская кнопка.

Любые идеи, как я могу сделать его более похожим на UIButton.

A is a UIButton, B is a custom button

Ответ 1

Вы поглаживаете границы своей кнопки. Это приведет к тому, что ваша линия будет центрирована по краю изображения, поэтому половина толщины линии выходит за границы и не нарисована. Вот почему он имеет полную толщину в углах. Используйте CGRectInset на вашем прямоугольнике границ (вставка на половину толщины вашей линии) и проведите его прямо.

Ответ 2

Проблема, которую вы имеете, вероятно, связана с сглаживанием. Вы можете попытаться изменить настройки сглаживания CoreGraphics перед рисованием beizerPath.

Более простым решением является использование CALayer вашей кнопки и ее свойство cornerRadius. Было бы проще нарисовать округленный угол

Если self - ваша пользовательская кнопка:

self.layer.cornerRadius = RECT_CORNER_RADIUS;
self.layer.borderWidth = 1.0f;
self.layer.borderColor = [UIColor blackColor].CGColor;

Конечно, не забудьте импортировать структуру QuartzCore и импортировать ее заголовок для работы (#import)