AutoLayoutの制約をなるべく簡単にしたいですよね。
XibをViewに読み込むことでViewController内の制約をよりシンプルに!そして簡略化します。
#解説
まずはsampleViewController.Xib
の中にViewを置きます。
このようにViewを置いたらSwiftファイルとViewのXibファイルを作成していきます。
ファイル名は同名にしましょう!!(今回はsampleHomeViewと命名)
sampleHomeView.swift
にコードを書きます。こちらはコピペでOKです。
import UIKit
class sampleHomeView: UIView {
override init(frame: CGRect) {
super.init(frame: frame)
loadView()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
loadView()
}
private func loadView() {
let className = String(describing: type(of: self))
let view: UIView = Bundle.main.loadNibNamed(className, owner: self, options: nil)?.first as? UIView ?? UIView()
view.frame = bounds
addSubview(view)
}
}
このコードを書くことでFile's Ownerのクラス設定ができ、Viewに読み込めるようになります。
sampleHomeView.Xib
のFile's Ownerを選択し、ClassをsampleHomeViewにします。
そしたらsampleHomeView.Xib
にUIパーツを置いていきます。(今回はButtonを配置します)
次にsampleView.Xib
の設定をしていきます。
一番最初に置いたViewを選択して、CustomClassのClassをsampleHomeViewにします。
これでXibをViewに読み込ませることができるようになりました。
しかし、この状態ではViewに読み込んでいることがわからないのでビルドしましょう!!
これで読み込ませることができましたね(^ ^)
こうすることにより、UIパーツのレイアウトを簡略化できそうです。