我正在尝试按如下方式绘制自定义按钮框架:
UIBezierPath *stroke = [UIBezierPath bezierPathWithRoundedRect:self.bounds
cornerRadius:RECT_CORNECR_RADIUS];
[stroke stroke];
但由于某种原因,角落曲线看起来比侧面更有思想性。如果你看看UIButton的默认框架,它是非常统一的。 A是UIButton,B是自定义按钮。
任何想法如何让它更像UIButton。
答案 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)