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 中检索文本?