Ios 自定义按钮框不';t看起来没有圆形的矩形按钮好

Ios 自定义按钮框不';t看起来没有圆形的矩形按钮好,ios,uibutton,custom-controls,uibezierpath,Ios,Uibutton,Custom Controls,Uibezierpath,我试图绘制一个自定义按钮框,如下所示: UIBezierPath *stroke = [UIBezierPath bezierPathWithRoundedRect:self.bounds cornerRadius:RECT_CORNECR_RADIUS]; [stroke stroke]; 但由于某些原因,拐角曲线看起来比侧面更像。如果您查看UIButton的默认帧,它非常统一。A是UIBu

我试图绘制一个自定义按钮框,如下所示:

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

[stroke stroke];
但由于某些原因,拐角曲线看起来比侧面更像。如果您查看UIButton的默认帧,它非常统一。A是UIButton,B是自定义按钮

有没有办法让它更像UIButton


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

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

如果自定义按钮是
self

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

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

您正在点击按钮的边界。这将以视图的边缘为中心绘制线,因此线的一半厚度在边界之外,不会绘制。这就是为什么它是全厚度的角落。在边界矩形上使用
CGRectInset
(插入线的一半厚度)并在该矩形上划一条线

就这样!现在一切都有意义了。我做了CGRectInset(self.bounds,1,1),所有的工作都很完美。谢谢谢谢,在添加插图之前,我在虚线圆形矩形的角上得到了一个扩口笔划,这就解决了这个问题。