Я создал собственный класс IBDesignableUISegmentedControl.
У класса нет ошибок сборки, но есть предупреждения, он не обновляется внутри 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 не находит ваш подкласс UISementedControl. Обычно это вызвано тем, что не указан правильный модуль, в котором определяется класс, и, поскольку ваш подкласс определен как open, вполне вероятно, что он у вас есть во фреймворке или модуле вне целевого приложения.
Итак, убедитесь, что вы установили пользовательский класс для сегментированного элемента управления на раскадровке, что вы также выбрали правильный модуль, для которого определен подкласс, и вы, вероятно, хотите снять флажок «наследовать модуль от цели», чтобы сделать это:
Это внутри того же проекта. Если я снимаю галочку с наследования модуля и выбираю модуль, я получаю ошибку проектирования.