Swift 在情节提要中设置 UIButton setBorderColor

Posted

技术标签:

【中文标题】Swift 在情节提要中设置 UIButton setBorderColor【英文标题】:Swift set UIButton setBorderColor in Storyboard 【发布时间】:2017-02-04 15:00:13 【问题描述】:

我正在尝试在 Storyboard 上设置 UIButton 边框颜色:

但是按钮仍然是黑色的。当我尝试使用 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 应用程序开始构建但失败。日志中没有错误。我在哪里可以找到错误以及如何解决?

【问题讨论】:

这看起来像你为 UIButton 做了一个 IBDesignable。你做了一个 IBInspectable 吗?拜托,我们可以很容易地调试这个 - 但向我们展示你的代码! 最好使用子类,因为 UIButton 颜色采用 CGColor。 【参考方案1】:

这是我的 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 子类。下面是结果的三个屏幕截图。请注意,在身份检查器中,我将 Class 设置为 Button,而不是 UIButton,并且它报告 Designables 是“最新的”。请注意,在属性检查器中,这些显示为最顶部的属性。

【讨论】:

我正在尝试使用它,但我仍然收到 Designables: Build failed, more on the top。你知道发生了什么吗? 它看起来完全一样,除了IBDesignable下面的空白行——(我认为)不会有任何区别。我唯一的问题与构建错误无关。您是否检查了问题导航器而不是日志?它是 Xcode 中左侧的第四个按钮。 警告是否与子类按钮有关?如果没有,您是否尝试过在 IB 中进行更改?我会用截图编辑我的答案。【参考方案2】:

您可以更改 UIButton 表单界面生成器的某些属性,但不能更改边框颜色。另一种方法是将其子类化,就像 dfd 建议的答案一样。

【讨论】:

以上是关于Swift 在情节提要中设置 UIButton setBorderColor的主要内容,如果未能解决你的问题,请参考以下文章

UIView 子类在 Swift 中设置自己的高度 + UIViewController 中的约束 + 情节提要

如何使用 Swift 中的自动生成键从情节提要中设置的 UITextView 中检索文本?

iOS8 在情节提要中设置弹出框大小

UIButton tint color 不适用于整个按钮?在故事板中设置?

在 Xcode 8.2 中设置特定于设备的字体

如何在情节提要中设置 UINavigationController 的委托