Пользовательская рамка кнопки выглядит не так хорошо, как 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)