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

我试图画一个自定义的button框架如下:

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

但由于某种原因,angular落的曲线看起来比两边思考。 如果你看看UIButton的默认框架,它是非常统一的。 A是一个UIButton,B是一个自定义button。

任何想法,我可以使它更像UIButton。

A是一个UIButton,B是一个自定义按钮

你正在抚摸你的button的边界。 这将画出你的线在视图的边缘上居中,所以线的一半厚度在边界之外并且不被绘制。 这就是为什么它是在angular落里的全部厚度。 在你的边界矩形上使用CGRectInset (插入你的线的一半厚度),然后笔触。

你有问题可能是由于抗锯齿。 在绘制beizerPath之前,可以尝试更改CoreGraphics的抗锯齿设置。

更简单的解决scheme是使用button的CALayer及其cornerRadius属性。 绘制一个圆angular将会更容易

如果你是自定义button:

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

当然,不要忘记导入QuartzCore框架并导入它的头文件来工作 (#import)