我正在尝试构建(以编程方式)一个新视图并使用IBDesignable属性来简化此过程并在故事板而不是白色矩形中显示视图。
这是一个包含两个子视图的类:UILabel和UIImageView. 我将它们动态添加到父视图并为它们设置了几个约束:
import UIKit
@IBDesignable
class ChoiceView: UIView {
enum ChoiceState {
case empty, chosen
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
setupViewForState(.empty)
}
override init(frame: CGRect) {
super.init(frame: frame)
setupViewForState(.empty)
}
override func awakeFromNib() {
super.awakeFromNib()
}
override func layoutSubviews() {
super.layoutSubviews()
}
private func setupViewForState(_ state: ChoiceState) {
guard case .empty = state else { return } // single case for now
let placeholder = UILabel()
let choiceImage = UIImageView(image: …Run Code Online (Sandbox Code Playgroud) 我有一个UIView是@IBDesignable
@IBDesignable
class MyView: UIView {
override init(frame: CGRect) {
super.init(frame: frame)
sharedInit()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
sharedInit()
}
private func sharedInit(){
translatesAutoresizingMaskIntoConstraints = false
backgroundColor = .blue
}
}
Run Code Online (Sandbox Code Playgroud)
当我将其放置UIView在情节提要中并MyView在“ 身份”检查器中将其类分配给时,UIView仍然具有默认的背景色。为什么其背景颜色不在UIColor.blue情节提要中?而且,请问我该怎么做呢?
谢谢你的帮助。
我按照这里的教程创建了一个可检查和可设计的视图.我只想添加边框颜色,边框宽度和圆角边框功能UIView.
我成功地展示了这些属性.但是无论我在故事板上设置什么,结果仍然就像他们不在那里一样.没有边框,即使我将边框设置为宽2和黑色.它没有在故事板和运行时显示.我已将边框设置为2宽度,但在运行时,我在didViewLoad处打印边框宽度值,结果为0.可能出现什么问题?
@IBDesignable extension view: UIView {
@IBInspectable var cornerRadius: CGFloat {
get {
return layer.cornerRadius
}
set {
layer.cornerRadius = newValue
layer.masksToBounds = newValue > 0
}
}
@IBInspectable var borderWidth: CGFloat {
get {
return layer.borderWidth;
}
set {
layer.borderWidth = borderWidth;
}
}
@IBInspectable var borderColor: UIColor? {
get {
return UIColor(CGColor: layer.borderColor!);
}
set {
layer.borderColor = borderColor?.CGColor
}
}
}
Run Code Online (Sandbox Code Playgroud)
这也不起作用:
@IBDesignable class BOView: UIView {
@IBInspectable var cornerRadius: CGFloat { …Run Code Online (Sandbox Code Playgroud)