Я создал пользовательский вид с помощью файла .Xib
. Когда я создаю представление программно и добавляю его в свой ViewController, он работает отлично. Но если я создаю UIView в Interface Builder и задаю класс для своего класса CustomView
и запустим его, он не появится.Пользовательский вид, созданный с использованием Xib, не работающего в Interface Builder
Это код в моем CustomView
классе:
@IBOutlet var view: UIView!
init() {
super.init(frame:CGRect.zero)
setup()
}
override init(frame: CGRect) {
super.init(frame: frame)
setup()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)!
setup()
}
func setup() {
Bundle.main.loadNibNamed("CustomView", owner: self, options: nil)
view.backgroundColor = UIColor(red: 10.0/255.0, green: 30.0/255.0, blue: 52.0/255.0, alpha: 1.0)
view.translatesAutoresizingMaskIntoConstraints = false
view.isUserInteractionEnabled = true
}
func presentInView(superView:UIView) {
superView.addSubview(view)
// Define Constraints
let height = NSLayoutConstraint(item: view, attribute: .height, relatedBy: .equal, toItem: nil, attribute: .notAnAttribute, multiplier: 1.0, constant: 90.0)
view.addConstraint(height)
let topConstraint = NSLayoutConstraint(item: view, attribute: .top, relatedBy: .equal, toItem: superView, attribute: .top, multiplier: 1.0, constant: 0.0)
let leftConstraint = NSLayoutConstraint(item: view, attribute: .left, relatedBy: .equal, toItem: superView, attribute: .left, multiplier: 1.0, constant: 0.0)
let rightConstraint = NSLayoutConstraint(item: view, attribute: .right, relatedBy: .equal, toItem: superView, attribute: .right, multiplier: 1.0, constant: 0.0)
superView.addConstraints([topConstraint,leftConstraint, rightConstraint])
}
В файле .Xib
я установить класс для Files Owner
к CustomView
и подключить IBOutlet view
к главному представлению в .Xib
.
В моей ViewController я сделал это, чтобы добавить CustomView
к нему:
let customView = CustomView()
customView.presentInView(superView: self.view)
Когда я добавляю UIView
в Interface Builder, он должен работать так же, как это происходит, когда я делаю это программно.
Да, я назначил его так же, как вы сделали – Codey
. Вы установили NSLayoutConstraint. Из конструктора интерфейса и сделайте их выход для дальнейших изменений. –
Да, я создал ограничения, но я не сделал его выходом, потому что мне он больше не нужен. – Codey