Определите класс UIView с именем MyTabBar и используйте тот же класс вместо UIView, где вы хотите добавить панель вкладок
class MyTabBar: NibView {
}
Теперь создайте суперкласс NibView, который будет обрабатывать все, что касается файла XIBслияние
class NibView: UIView {
var view: UIView!
override init(frame: CGRect) {
super.init(frame: frame)
xibSetup()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
xibSetup()
}
}
extension NibView {
func xibSetup() {
view = loadNib()
view.translatesAutoresizingMaskIntoConstraints = false
view.frame = bounds
addSubview(view)
// add Constraints
addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:|[childView]|", options: [], metrics: nil, views: ["childView": view]))
addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|[childView]|", options: [], metrics: nil, views: ["childView": view]))
}
}
extension UIView {
func loadNib() -> UIView {
let bundle = Bundle(for: type(of: self))
let nibName = type(of: self).description().components(separatedBy: ".").last!
let nib = UINib(nibName: nibName, bundle: bundle)
return nib.instantiate(withOwner: self, options: nil).first as! UIView
}
}
Подробнее о том, как использовать перо https://medium.com/swift2go/swift-custom-uiview-with-xib-file-211bb8bbd6eb
, можно узнать здесь.