如果我想,例如在tintColor中创建一个按钮的背景,我该如何在Interface Builder中完成? 我真的不明白为什么在所有颜色选择中都没有“tintColor”选项。 也许这里有我想念的东西?
PS:我知道我可以在代码中执行此操作,但如果XCode中存在某些内容,我更愿意使用它。
答案 0 :(得分:2)
答案 1 :(得分:0)
您将需要扩展UIButton来实现。这是示例代码
class ColoredButton: UIButton {
// MARK: Overrides
override public func layoutSubviews() {
super.layoutSubviews()
redraw()
}
override public var isEnabled: Bool {
didSet {
layoutSubviews()
}
}
// MARK: Private
private func redraw() {
self.layer.cornerRadius = 6
if self.isEnabled {
self.backgroundColor = UIApplication.shared.delegate?.window!?.tintColor
} else {
self.backgroundColor = UIColor.gray
}
}
}
PS:我敢肯定,我在Apple应用程序中的某个地方看到过这样的彩色按钮。这也在他们的人机界面指南(https://developer.apple.com/design/human-interface-guidelines/ios/controls/buttons/)中。但是不知道为什么他们没有在UIKit中使用状态管理来实现它的风格。 BackgroudColor默认情况下不支持状态,如果您希望在用户选择按钮时在背景上获得透明性,则必须实现该状态。也许另一种方法是将UIColor转换为UIImage,因为backgroundImage支持状态。我几乎可以肯定这也不是一个好主意:)