У меня есть требование показа баннера, чтобы показать сообщение,
Теперь содержимое сообщения может меняться, и размер представления также должен изменяться в зависимости от содержимого UILabel
s.
UILabel
установлен на Word Wrap
, а numberOfLines
установлен на 0
Дизайн в xib
есть,
И соответствующий файл класса,
import UIKit
class ORABannerView: UIView {
@IBOutlet weak var bannerText: UILabel!
static func instantiate(message: String) -> ORABannerView {
let view: ORABannerView = initFromNib() ?? ORABannerView()
view.bannerText.text = message
return view
}
override init(frame: CGRect) {
super.init(frame: frame)
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
override func draw(_ rect: CGRect) {
super.draw(rect)
}
}
initFromNib
реализован как расширение UIView,
extension UIView {
class func initFromNib<T: UIView>() -> T? {
guard let view = Bundle.main.loadNibNamed(String(describing: self), owner: nil, options: nil)?[0] as? T else {
return nil
}
return view
}
}
Пробовал с layoutIfNeeded()
на виде, но у меня не работает.
Будем благодарны за любые предложения.