Xibとは
Storyboard 画面間の関係と、画面の中身を表示するもの
Xib 画面に表示するパーツを表示するもの
初期化
override init(frame: CGRect) {
super.init(frame: frame) self.setFromXib() autoresizingMask = .flexibleHeight
}
intrinsicContentSize
Viewの初期サイズを指定する
override var intrinsicContentSize: CGSize {
return .zero
}
インスタンス化
let nib = UINib.init(nibName: "InputView", bundle: nil)
let view = nib.instantiate(withOwner: self, options: nil).first as! UIView
完成したコード
class InputView: UIView {
@IBOutlet weak var chatTextField: UITextField!
@IBOutlet weak var sendButton: UIButton!
var delegate:InputViewDelegate!
override init(frame: CGRect) {
super.init(frame: frame)
self.setFromXib()
autoresizingMask = .flexibleHeight
}
required init?(coder aDecoder: NSCoder) {
fatalError("error")
}
override var intrinsicContentSize: CGSize {
return .zero
}
@IBAction func onSend(_ sender: Any) {
delegate.sendTapped(text: chatTextField.text!)
chatTextField.text = ""
}
func setFromXib() {
let nib = UINib.init(nibName: "InputView", bundle: nil)
let view = nib.instantiate(withOwner: self, options: nil).first as! UIView
view.frame = self.bounds
view.autoresizingMask = [.flexibleHeight, .flexibleWidth]
self.addSubview(view)
}
}
protocol InputViewDelegate: class {
func sendTapped(text: String)
}
コメント