在Storyboard中如何设置Swift UIButton的边框颜色?

3
我正在尝试在Storyboard上设置UIButton边框颜色:Set button color 但是按钮仍然是黑色的。当我尝试使用layer.borderColor时,根本不显示边框。如何更改颜色?谢谢。// 更新 我已根据@dfd的建议改变了设置方式:
import Foundation
import UIKit

@IBDesignable

public class OnboardingButton: UIButton {
    @IBInspectable public var borderColor:UIColor? {
        didSet {
            layer.borderColor = borderColor?.cgColor
        }
   }
   @IBInspectable public var borderWidth:CGFloat = 0 {
        didSet {
            layer.borderWidth = borderWidth
        }
   }
   @IBInspectable public var cornerRadius:CGFloat {
        get {
            return layer.cornerRadius
        }
        set {
            layer.cornerRadius = newValue
            layer.masksToBounds = newValue > 0
        }
   }
}

在Storyboard中设置自定义类为*OnboardingButton后,应用程序开始构建但失败了。日志中没有错误。我该在哪里找到错误并如何修复?


这看起来像是你将IBDesignable应用到了UIButton上。你是否创建了IBInspectable?请展示你的代码,我们可以轻松地进行调试! - user7014451
最好使用子类,因为 UIButton 颜色需要 CGColor。 - Hasya
2个回答

6

这是我的UIButton子类:

@IBDesignable
public class Button: UIButton {
    @IBInspectable public var borderColor:UIColor? {
        didSet {
            layer.borderColor = borderColor?.cgColor
        }
    }
    @IBInspectable public var borderWidth:CGFloat = 0 {
        didSet {
        layer.borderWidth = borderWidth
        }
    }
    @IBInspectable public var cornerRadius:CGFloat {
        get {
            return layer.cornerRadius
        }
        set {
            layer.cornerRadius = newValue
            layer.masksToBounds = newValue > 0
        }
    }
}

编辑:

我创建了一个简单的项目,并添加了上面的IBDesignable子类。以下是结果的三个屏幕截图。请注意,在Identity检查器中,我将Class设置为Button,而不是UIButton,并且它报告Designables“已更新”。请注意,在Attributes检查器中,它们出现在最顶部作为属性。

Identity检查器 Attributes检查器 Storyboard快照


我正在尝试使用它,但仍然出现Designables: Build failed的错误提示,而且还有更多其他信息。你有什么想法发生了什么? - David
它看起来完全一样,除了IBDesignable下面的空白行 - 我认为这不会有任何影响。我的问题与构建错误无关。你有没有检查过问题导航器而不是日志?在Xcode中,它是左侧第四个按钮。 - user7014451
警告与子类按钮有关吗?如果不是,您尝试在IB中更改了什么吗?我将编辑我的答案并附上屏幕截图。 - user7014451

0

您可以在界面构建器中更改UIButton的某些属性,但无法更改边框颜色。另一种方法是像dfd建议的那样对其进行子类化。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接