当您使用 Xibs 处理自定义视图时,您应该先加载它们。
因此,例如,在您的 Slide 类中,您可以创建如下静态函数:
static func createView(with owner: Any) -> Slide {
let nib = UINib.init(nibName: "YourNibName", bundle: nil)
let views = nib.instantiate(withOwner: owner, options: nil)
let view = views[0] as! Slide
view.translatesAutoresizingMaskIntoConstraints = false
return view
}
YourNibName 应该是您的 Xib 文件的名称。
这个静态函数可以像这样使用:
let slide = Slide.createView(with: self)
// attach the view to a superview
aSuperview.addSubview(slide)
// setup the right constraints
// for example
slide.topAnchor.constraint(equalTo: aSuperview.topAnchor).isActive = true
// ...and so on
然后重要的是在 Interface Builder 中为您的 Xib 设置正确的视图:
回顾一下你的观点应该是这样的(注意我将Slide重命名为SlideView。听起来更好):
class SlideView: UIView {
@IBOutlet var descriptionImage: UIImageView!
@IBOutlet var descriptionLabel: UILabel!
@IBOutlet var hiLabel: UILabel!
@IBOutlet var loLabel: UILabel!
@IBOutlet var humidityLabel: UILabel!
static func createView(with owner: Any) -> SlideView {
let nib = UINib.init(nibName: "YourNibName", bundle: nil)
let views = nib.instantiate(withOwner: owner, options: nil)
let view = views[0] as! SlideView
view.translatesAutoresizingMaskIntoConstraints = false
return view
}
}