Пользовательская рамка кнопки не выглядит так же хорошо, как круглая Rect UIButton - PullRequest
10 голосов
/ 27 октября 2011

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

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

Ответы [ 2 ]

25 голосов
/ 27 октября 2011

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

0 голосов
/ 27 октября 2011

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

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

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

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

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

...