Một số phương thức hỗ trợ lập trình, note lại cho bản thân.
Autolayout
1
2
3
4
5
6
7
8
9
10
11
12
|
extension UIView {
func pinToBounds(_ view: UIView) {
view.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
view.topAnchor.constraint(equalTo: topAnchor),
view.bottomAnchor.constraint(equalTo: bottomAnchor),
view.leadingAnchor.constraint(equalTo: leadingAnchor),
view.trailingAnchor.constraint(equalTo: trailingAnchor)
])
}
}
|
Storyboard
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
protocol Storyboardable { }
extension Storyboardable where Self: UIViewController {
static func instantiateInitialFromStoryboard() -> Self {
let controller = storyboard().instantiateInitialViewController()
return controller! as! Self
}
static func storyboard(fileName: String? = nil) -> UIStoryboard {
let storyboard = UIStoryboard(name: fileName ?? storyboardIdentifier, bundle: nil)
return storyboard
}
static var storyboardIdentifier: String {
return String(describing: self)
}
}
|
Cách dùng:
1
2
3
|
class ViewController: UIViewController, Storyboardable { ... }
let vc = ViewController.instantiateInitialFromStoryboard()
|
Add child viewcontroller
Sử dụng lại hàm pinToBounds
1
2
3
4
5
6
7
8
9
10
11
12
13
|
extension UIViewController {
func insertFullframeChildController(
_ childController: UIViewController,
toView: UIView? = nil,
index: Int) {
let containerView: UIView = toView ?? view
addChild(childController)
containerView.insertSubview(childController.view, at: index)
containerView.pinToBounds(childController.view)
childController.didMove(toParent: self)
}
|