【问题标题】:Custom UIButton rounder corners become squared on highlight?自定义 UIButton 圆角在突出显示时变成正方形?
【发布时间】:2017-08-22 11:54:58
【问题描述】:

我有以下自定义 UIButton 的代码:

btnLogin.layer.cornerRadius = 10;

[btnLogin setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"bluetint.png"]]];
[btnLogin setAlpha:1];
[btnLogin setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
[btnLogin setBackgroundImage:[UIImage imageNamed:@"reallybluetint.png"] forState:UIControlStateHighlighted];
[btnLogin setBackgroundImage:[UIImage imageNamed:@"reallybluetint.png"] forState:UIControlStateSelected];

当我突出显示按钮时,即使它在正常状态下具有圆角,它也会变成方形。

有什么想法吗?

【问题讨论】:

  • 使用 uicontrolstate 在突出显示时创建一个默认按钮。因此方角。如果您愿意,我可以向您展示如何使用 quarts core 创建您的按钮。

标签: ios xcode button


【解决方案1】:

尝试使用此代码,它会起作用,

btnLogin.layer.cornerRadius = 10.0;
[btnLogin setClipsToBounds:YES];

【讨论】:

    【解决方案2】:

    我也遇到过类似的问题,请确保界面生成器中的按钮设置为自定义,因为如果不是,您会看到圆角。

    我在处理图像时还发现了一些有用的东西是 UIEdgeInsets。所以我可能会做一个这样的程序化自定义按钮。

    UIButton * customButton = [UIButton buttonWithType:UIButtonTypeCustom];
    [customButton setBackgroundImage:[[UIImage imageNamed:@"customerImage.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(1, 4, 2, 4)] forState:UIControlStateNormal];
    

    但是对于任何图像,您都可以使用 resizableImageWithCapInsets。我建议您阅读此内容以确保您可以正确配置它,但即使它对您没有帮助,您也知道它可以在以后帮助您。

    Apple Doc 只需控制 F 即可调整大小

    希望对你有所帮助^_^

    附言圆角将起作用,但是如果您尝试这样做并且它不起作用,请确保您已导入 Quartzcore。我经常忘记这一步,并在我弄明白之前变得焦虑。总之祝你好运!

    【讨论】:

      【解决方案3】:

      Swift 中:

      import UIKit
      
      class CustomUIButtonForUIToolbar: UIButton {
      
          override func drawRect(rect: CGRect) {
              super.drawRect(rect)
              ...
              self.clipsToBounds = true
          }
      
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-12-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多