自定义按钮框架看起来不如Round Rect UIButton

时间:2011-10-27 07:19:49

标签: ios uibutton custom-controls uibezierpath

我正在尝试按如下方式绘制自定义按钮框架:

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 个答案:

答案 0 :(得分:25)

您正在抚摸按钮的边界。这将绘制您的线在视图边缘的中心,因此线的一半厚度超出边界并且不绘制。这就是它在角落里的全厚度的原因。在边界矩形上使用CGRectInset(插入线条粗细的一半)并按下直线。

答案 1 :(得分:0)

您遇到的问题可能是抗锯齿问题。在绘制beizerPath之前,您可以尝试更改CoreGraphics的抗锯齿设置。

更简单的解决方案是使用按钮的CALayer及其cornerRadius属性。画一个圆角

会更容易

如果self是您的自定义按钮:

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

当然不要忘记导入 QuartzCore 框架并导入其标题以使其正常工作(#import)