将@IBInspectable 与故事板中的任何 UIView 子类一起使用
Use @IBInspectable with any UIView subclass within storyboards
我有一个 class 与 @IBInspectable
一起使用,以获取故事板中的属性。这是其中的一小部分:
/// UIView subclass to allow creating corners, shadows, and borders in storyboards.
final class GEView: UIView {
// MARK: - Rounded corners
@IBInspectable
var cornerRadius: CGFloat = 0 {
didSet {
layer.cornerRadius = self.cornerRadius
layer.masksToBounds = true
}
}
/* ... */
}
这在我的情节提要 UIView
秒内完全正常。但是,我希望它也适用于 UIImageView
和 UIView
的其他子 class。这是否可以通过某种方式使它成为通用的,而无需 subclassing 我的 GEView
?
将您的代码移动到 UIView 的 @IBDesignable extension
,如下所示:
@IBDesignable extension UIView {
@IBInspectable var cornerRadius: CGFloat {
set {
layer.cornerRadius = newValue
layer.masksToBounds = true
}
get {
return self.cornerRadius
}
}
}
清除 GEView
中不需要的 values/types 以前定义的变量。这是检查器中的值。
任何 UIView 的检查器中可用的属性,包括它本身。
我有一个 class 与 @IBInspectable
一起使用,以获取故事板中的属性。这是其中的一小部分:
/// UIView subclass to allow creating corners, shadows, and borders in storyboards.
final class GEView: UIView {
// MARK: - Rounded corners
@IBInspectable
var cornerRadius: CGFloat = 0 {
didSet {
layer.cornerRadius = self.cornerRadius
layer.masksToBounds = true
}
}
/* ... */
}
这在我的情节提要 UIView
秒内完全正常。但是,我希望它也适用于 UIImageView
和 UIView
的其他子 class。这是否可以通过某种方式使它成为通用的,而无需 subclassing 我的 GEView
?
将您的代码移动到 UIView 的 @IBDesignable extension
,如下所示:
@IBDesignable extension UIView {
@IBInspectable var cornerRadius: CGFloat {
set {
layer.cornerRadius = newValue
layer.masksToBounds = true
}
get {
return self.cornerRadius
}
}
}
清除 GEView
中不需要的 values/types 以前定义的变量。这是检查器中的值。
任何 UIView 的检查器中可用的属性,包括它本身。