【问题标题】:Custom Button frame doesn't look as good as Round Rect UIButton自定义按钮框架看起来不如圆形矩形 UIButton
【发布时间】:2011-10-27 07:19:48
【问题描述】:

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

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

[stroke stroke];

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

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

【问题讨论】:

    标签: ios uibutton custom-controls uibezierpath


    【解决方案1】:

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

    【讨论】:

    • 就是这样!现在一切都说得通了。我做了 CGRectInset(self.bounds, 1, 1) 并且一切正常。谢谢!
    • 谢谢,在添加插图之前,我在虚线圆角矩形的角上画了一个喇叭形的笔触,这解决了它。
    【解决方案2】:

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2023-02-08
      • 2012-04-10
      • 2012-09-13
      • 2011-02-03
      • 2013-10-09
      • 2011-03-31
      • 2013-09-28
      • 1970-01-01
      相关资源
      最近更新 更多