10

我正在尝试绘制一个自定义按钮框架,如下所示:

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

[stroke stroke];

但由于某种原因,拐角曲线看起来比侧面更思考。如果您查看 UIButton 的默认框架,它非常统一。A 是 UIButton,B 是自定义按钮。

任何想法如何使它更像 UIButton。

A 是 UIButton,B 是自定义按钮

4

2 回答 2

25

您正在抚摸按钮的边界。这会将您的线绘制在视图边缘的中心,因此线的一半粗细在边界之外并且不会被绘制。这就是为什么它在角落里是全厚度的。在边界矩形上使用CGRectInset(插入线条厚度的一半)并描边那个矩形。

于 2011-10-27T07:59:40.457 回答
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)

于 2011-10-27T07:53:49.480 回答