IBDesignable class 未在 xcode 内更新
IBDesignable class not updating in xcode
我创建了一个自定义 IBDesignable
UISegmentedControl
class。
class 没有构建错误但有警告,它不会在 Xcode 内部更新。有警告,见下面的截图。
@IBDesignable open class UISegmentedControlBorderless : UISegmentedControl {
@IBInspectable var borderColor:UIColor = UIColor.white {
didSet {
setupUI()
}
}
@IBInspectable var textColor:UIColor = UIColor.white {
didSet {
setupUI()
}
}
@IBInspectable var textSelectedColor:UIColor = UIColor.red {
didSet {
setupUI()
}
}
required public init?(coder aDecoder:NSCoder) {
super.init(coder:aDecoder)
setupUI()
}
override init(frame:CGRect) {
super.init(frame:frame)
setupUI()
}
override open func awakeFromNib() {
super.awakeFromNib()
setupUI()
}
override open func prepareForInterfaceBuilder() {
super.prepareForInterfaceBuilder()
setupUI()
}
fileprivate func setupUI() {
tintColor = borderColor
let attributes = [NSAttributedStringKey.foregroundColor: textColor]
let attributes2 = [NSAttributedStringKey.foregroundColor: textSelectedColor]
setTitleTextAttributes(attributes, for: .normal)
setTitleTextAttributes(attributes2, for: .selected)
}
}
Warnings:
取消勾选继承模块
根据您的屏幕截图中的第一个警告,Xcode 没有找到您的 UISegementedControl subclass。这通常是由于未在定义 class 的地方设置正确的模块引起的,并且由于您的 subclass 被定义为 open
,因此您很可能将它放在框架或模块中在目标应用之外。
因此,请确保您在 Storyboard 上为分段控件设置自定义 class 的位置,同时您还为定义 subclass 的位置选择了正确的模块,并且您可能想要取消选中 "inherit module from target" 以便这样做:
我创建了一个自定义 IBDesignable
UISegmentedControl
class。
class 没有构建错误但有警告,它不会在 Xcode 内部更新。有警告,见下面的截图。
@IBDesignable open class UISegmentedControlBorderless : UISegmentedControl {
@IBInspectable var borderColor:UIColor = UIColor.white {
didSet {
setupUI()
}
}
@IBInspectable var textColor:UIColor = UIColor.white {
didSet {
setupUI()
}
}
@IBInspectable var textSelectedColor:UIColor = UIColor.red {
didSet {
setupUI()
}
}
required public init?(coder aDecoder:NSCoder) {
super.init(coder:aDecoder)
setupUI()
}
override init(frame:CGRect) {
super.init(frame:frame)
setupUI()
}
override open func awakeFromNib() {
super.awakeFromNib()
setupUI()
}
override open func prepareForInterfaceBuilder() {
super.prepareForInterfaceBuilder()
setupUI()
}
fileprivate func setupUI() {
tintColor = borderColor
let attributes = [NSAttributedStringKey.foregroundColor: textColor]
let attributes2 = [NSAttributedStringKey.foregroundColor: textSelectedColor]
setTitleTextAttributes(attributes, for: .normal)
setTitleTextAttributes(attributes2, for: .selected)
}
}
Warnings:
取消勾选继承模块
根据您的屏幕截图中的第一个警告,Xcode 没有找到您的 UISegementedControl subclass。这通常是由于未在定义 class 的地方设置正确的模块引起的,并且由于您的 subclass 被定义为 open
,因此您很可能将它放在框架或模块中在目标应用之外。
因此,请确保您在 Storyboard 上为分段控件设置自定义 class 的位置,同时您还为定义 subclass 的位置选择了正确的模块,并且您可能想要取消选中 "inherit module from target" 以便这样做: