我以为我已经掌握了重用XIB的大多数基础知识,但是在这里遇到了一些麻烦。我正在创建一个UIView
来向用户显示登录视图,在某些情况下我需要重用它。
我的UIView是以下
尚未完全完成视图,但是暂时无法完成
我已将类分配给UIView
至LogInView
,在Interface Builder中,我将其放入其中,如下所示。
在UIViewController中使用我的自定义
LogInView
我的问题是*为什么我添加到XIB的视图在那里显示,但是当我使用XIB时却没有显示。阴影,cornerRadius和backgroundColor会被修改并显示在InterfaceBuilder中。
我读过的一种解决方案可能是使用XIB
加载Bundle.main.load(...)
,但是当我这样做时,为ViewController
渲染的视图变黑了,我真的不知道在何处以及为什么放置这段代码。
我的LogInView
的代码如下。
@IBDesignable class LogInView: UIView {
@IBOutlet weak var logInViewTitleLabel: UILabel!
override init(frame: CGRect) {
super.init(frame: frame)
commonInit()
}
func commonInit() {
self.backgroundColor = .white
self.layer.cornerRadius = 10.0
self.layer.shadowColor = UIColor.darkGray.cgColor
self.layer.shadowOffset = CGSize(width: 5.0, height: 5.0)
self.layer.shadowRadius = 25.0
self.layer.shadowOpacity = 0.9
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
commonInit()
}
override func prepareForInterfaceBuilder() {
super.prepareForInterfaceBuilder()
commonInit()
}
override func awakeFromNib() {
super.awakeFromNib()
commonInit()
}
}