【问题标题】:IBDesignable class not updating in xcodeIBDesignable 类未在 xcode 中更新
【发布时间】:2019-06-16 12:18:28
【问题描述】:

我创建了一个自定义 IBDesignable UISegmentedControl 类。 该类没有构建错误但有警告,它不会在 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)

    }  
}

警告:

取消继承模块

【问题讨论】:

    标签: ios swift xcode ibdesignable


    【解决方案1】:

    根据您屏幕截图中的第一个警告,Xcode 没有找到您的 UISegementedControl 子类。这通常是由于未在定义类的位置设置正确的模块造成的,并且由于您的子类被定义为 open,因此您似乎将它放在目标应用程序之外的框架或模块中。

    因此,请确保您在情节提要上为分段控件设置自定义类的位置还为定义子类的位置选择了正确的模块,并且您可能希望取消选中“从目标继承模块”以执行所以:

    【讨论】:

    • 它在同一个项目中。如果我取消选中继承模块并选择模块,我会得到一个可设计错误
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-08
    • 1970-01-01
    • 1970-01-01
    • 2020-12-03
    相关资源
    最近更新 更多