рдирд┐рдпрдВрддреНрд░рдХ, рдпрд╣ рдЖрд╕рд╛рди рд▓реЗ рд▓реЛ! рд╣рдо UIView рдореЗрдВ рдХреЛрдб рдирд┐рдХрд╛рд▓рддреЗ рд╣реИрдВ

рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдмрдбрд╝рд╛ UIViewController рд╣реИ? рдмрд╣реБрддреЛрдВ рдХреЗ рд▓рд┐рдП, рд╣рд╛рдБред рдПрдХ рдУрд░, рдпрд╣ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рджреВрд╕рд░реЗ рдкрд░ - рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╕рд╛рдеред

рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реИрдХрдбрд╝реЛрдВ рд▓реЗрдЦреЛрдВ рдореЗрдВ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕реЗ рддрд░реНрдХ рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: MVP, MVVM, VIPERред рд╡реЗ рдбреЗрдЯрд╛ рдкреНрд░рд╡рд╛рд╣ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕ рд╕рд╡рд╛рд▓ рдХрд╛ рдЬрд╡рд╛рдм рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВ рдХрд┐ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛ рдЬрд╛рдП: рдПрдХ рдЬрдЧрд╣ рдкрд░ рддрддреНрд╡реЛрдВ, рд▓реЗрдЖрдЙрдЯ, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди, рдЗрдирдкреБрдЯ рдФрд░ рдПрдиреАрдореЗрд╢рди рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдирд┐рд░реНрдорд╛рдг рд░рд╣рддрд╛ рд╣реИред

рдЖрдЗрдП рдирд┐рдпрдВрддреНрд░рдХ рд╕реЗ рджреГрд╢реНрдп рдХреЛ рдЕрд▓рдЧ рдХрд░реЗрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдХреИрд╕реЗ loadView () рд╣рдорд╛рд░реА рдорджрдж рдХрд░рддрд╛ рд╣реИред



IOS рдХреЗ рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ UIView рдкрджрд╛рдиреБрдХреНрд░рдо рд╣реИред рдкреНрд░рддреНрдпреЗрдХ view рдХрд╛рд░реНрдп: рддрддреНрд╡реЛрдВ рдХреЛ рдмрдирд╛рдирд╛, рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдирд╛, рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдирд╛, рдЪреЗрддрди рдХрд░рдирд╛ред рдпрд╣ рдЙрди рддрд░реАрдХреЛрдВ рд╕реЗ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ UIView: addSubview(), drawRect(), layoutSubviews(). рд╡рд░реНрдЧ рдореЗрдВ рд╣реИрдВ UIView: addSubview(), drawRect(), layoutSubviews().

рдпрджрд┐ рдЖрдк UIViewController рд╡рд░реНрдЧ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ view: рдкреНрд░рдмрдВрдзрди рдХрд░рддрд╛ рд╣реИ view: рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ, рд╕реНрдХреНрд░реАрди рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рдЬрд╡рд╛рдм рджреЗрддрд╛ рд╣реИ, рдФрд░ рдирдИ рд╕реНрдХреНрд░реАрди рджрд┐рдЦрд╛рддрд╛ рд╣реИред рдЕрдХреНрд╕рд░ рдХреЛрдб рдЬреЛ UIView рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд╣рдо UIViewController рдЙрдкрд╡рд░реНрдЧреЛрдВ рдореЗрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдпрд╣ рдмрд╣реБрдд рдмрдбрд╝рд╛ рдмрдирд╛рддрд╛ рд╣реИред рдЗрд╕реЗ рдЕрд▓рдЧ рдХрд░реЛред

loadView ()


UIViewController рдХрд╛ рдЬреАрд╡рди рдЪрдХреНрд░ loadView() рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рдПрдХ рд╕рд░рд▓реАрдХреГрдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

 // CustomViewController.swift func loadView() { self.view = UIView() } 

рд╣рдо рд╡рд┐рдзрд┐ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЕрдкрдиреА рдХрдХреНрд╖рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

super.loadView() рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ!

 // CustomViewController.swift override func loadView() { self.view = CustomView() } 

CustomView.swift рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
 // CustomView.swift final class CustomView { let square: UIView = UIView() init() { super.init() square.backgroundColor = .red addSubview(square) } } 


рдирд┐рдпрдВрддреНрд░рдХ CustomView, рдХреЛ рд▓реЛрдб CustomView, рдЗрд╕реЗ рдкрджрд╛рдиреБрдХреНрд░рдо рдореЗрдВ рдЬреЛрдбрд╝ рджреЗрдЧрд╛, рдПрдХреНрд╕рдкреЛрдЬрд╝рд░ .frame .view рд╕рдВрдкрддреНрддрд┐ рд╡рд╣ рд╡рд░реНрдЧ рд╣реЛрдЧрд╛ рдЬрд┐рд╕рдХреА рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

 // CustomViewController.swift print(view) // CustomView 

рд▓реЗрдХрд┐рди рдЬрдмрдХрд┐ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреНрд▓рд╛рд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рд╣реИ рдФрд░ рдорд╛рдирддрд╛ рд╣реИ рдХрд┐ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп UIView ред рдЖрдЗрдП рдЗрд╕реЗ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рдХрд╛рд╕реНрдЯ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдареАрдХ рдХрд░реЗрдВ:

 // CustomViewController.swift func view() -> CustomView { return self.view as! CustomView } 

рдЕрдм рдЖрдк CustomView рдЪрд░ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:

 // CustomViewController.swift func viewDidLoad() { super.viewDidLoad() view().square //  } 

рд╕рдВрдмрджреНрдзрддрд╛ рдХреЗ рд╕рд╛рде рд╕рд░рд▓реАрдХреГрдд рдХрд░реЗрдВ
рд░реБрд╕реНрд▓рд╛рди рдХреЗрд╡рддреНрд╕реНрдХреА рдиреЗ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЛрдб рд╣рдЯрд╛рдиреЗ рдХреЛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд┐рдпрд╛:

 protocol ViewSpecificController { associatedtype RootView: UIView } extension ViewSpecificController where Self: UIViewController { func view() -> RootView { return self.view as! RootView } } 

рдкреНрд░рддреНрдпреЗрдХ рдирдП рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХреЗрд╡рд▓ typealias рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдкрдиреЗ UIView рд▓рд┐рдП рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдФрд░ рдЙрдкрд╡рд░реНрдЧ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

 // CustomViewController.swift final class CustomViewController: UIViewController, ViewSpecificController { typealias RootView = CustomView func viewDidLoad() { super.viewDidLoad() view().square //  } } 

UIView рдХреЗ рдПрдХ рдЙрдкрд╡рд░реНрдЧ рдореЗрдВ рдХреЛрдб


рдирд┐рдпрдВрддреНрд░рдг рдмрдирд╛рдирд╛ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛


рдлрд╝реЙрдиреНрдЯреНрд╕, рд░рдВрдЧ, рд╕реНрдерд┐рд░рд╛рдВрдХ рдФрд░ рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЛ рд╕реАрдзреЗ CustomView рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

 // CustomView.swift init() { super.init() backgroundColor = .lightGray addSubview(square) } 

рд▓реЗрдЖрдЙрдЯ рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░ ()


рдореИрдиреБрдЕрд▓ рд▓реЗрдЖрдЙрдЯ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреА рдЬрдЧрд╣ layoutSubviews() рд╡рд┐рдзрд┐ рд╣реИред рдЗрд╕реЗ рд╣рд░ рдмрд╛рд░ view рдЖрдХрд╛рд░ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдк рд╕рд╣реА рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП bounds рдЖрдХрд╛рд░ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 // CustomView.swift override func layoutSubviews() { super.layoutSubviews() square.frame = CGRect(x: 0, y: 0: width: 200, height: 200) square.center = CGPoint(x: bounds.width / 2, y: bounds.height / 2) } 

рдирд┐рдЬреА рдирд┐рдпрдВрддреНрд░рдг, рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЧреБрдг


рдпрджрд┐ рд╕рдордп рд╣реИ, рддреЛ рдореИрдВ property рдирд┐рдпрдВрддреНрд░рдг рдХреЛ рдирд┐рдЬреА рдмрдирд╛рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдЙрдиреНрд╣реЗрдВ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЪрд░ рдпрд╛ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ "рдЬреНрдЮрд╛рди рдХреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ" рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рддрд╛ рд╣реВрдВред рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг:

 // CustomView.swift private let square = UIView() var squarePositionIsValid: Bool { didSet { square.backgroundColor = squarePositionIsValid? .green : .red } } func moveSquare(to newCenter: CGPoint) { square.center = newCenter } 

рдПрдирдХреИрдкреНрд╕реБрд▓реЗрд╢рди рдХрд╛ рд▓рд╛рдн: рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдкреАрдЫреЗ рдЖрдВрддрд░рд┐рдХ рддрд░реНрдХ рдЫрд┐рдкрд╛ рд╣реБрдЖ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреА рд╡реИрдзрддрд╛ рдХреНрд╖реЗрддреНрд░ рдХреЗ рд░рдВрдЧ рд╕реЗ рдЗрдВрдЧрд┐рдд рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ, рди рдХрд┐ рд╡рд░реНрдЧ рд╕реЗ, рд▓реЗрдХрд┐рди рдирд┐рдпрдВрддреНрд░рдХ рдХреЛ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдкрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

ViewDidLoad () рдореЗрдВ рдХреНрдпрд╛ рд░рд╣рддрд╛ рд╣реИ?


рдпрджрд┐ рдЖрдк рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрд┐рд▓реНрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЕрдХреНрд╕рд░ viewDidLoad() рдЦрд╛рд▓реА рд╣реИред рдпрджрд┐ рдЖрдк рдХреЛрдб рдореЗрдВ рдПрдХ view рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рд▓рдХреНрд╖реНрдп-рдПрдХреНрд╢рди рдкреИрдЯрд░реНрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдирдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдмрд╛рдВрдзрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдПрдХ UIGestureRecognizer рдЬреЛрдбрд╝реЗрдВ рдпрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рдпреЛрдВ рдХреЛ рдмрд╛рдВрдзреЗрдВред

рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрд┐рд▓реНрдбрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдиреБрдХреВрд▓рди


view рд▓рд┐рдП рдЙрдкрд╡рд░реНрдЧ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрд┐рд▓реНрдбрд░ (рдЗрд╕рдХреЗ рдмрд╛рдж рдЖрдИрдмреА) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЖрдкрдХреЛ view рдСрдмреНрдЬреЗрдХреНрдЯ (рдирд┐рдпрдВрддреНрд░рдХ рдирд╣реАрдВ) рдХрд╛ рдЪрдпрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЗрд╕рдХреА рдХрдХреНрд╖рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреА рд╣реЛрдЧреАред рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ loadView() рдХреЛ рд▓рд┐рдЦрдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ, рдирд┐рдпрдВрддреНрд░рдХ рд╕реНрд╡рдпрдВ рдХрд░реЗрдЧрд╛ред рд▓реЗрдХрд┐рди UIView рдЕрднреА рднреА UIView рдЯрд╛рдЗрдк UIView ред



UIView рдореЗрдВ IBOutlet


рдпрджрд┐ рдЖрдк view рдЕрдВрджрд░ рдирд┐рдпрдВрддреНрд░рдг рдХрд╛ рдЪрдпрди рдХрд░рддреЗ view , рддреЛ рд╕рд╣рд╛рдпрдХ рд╕рдВрдкрд╛рджрдХ UIView рд╡рд░реНрдЧ рдХреЛ рдкрд╣рдЪрд╛рдирддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдореЛрдб рдореЗрдВ рджреВрд╕рд░реА рдлрд╝рд╛рдЗрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реИред рддреЛ рдЖрдк IBOutlet рдХреЛ view рд▓рд┐рдП рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ view ред



рдЕрдЧрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ
CustomView рд╡рд░реНрдЧ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЦреЛрд▓реЗрдВ, IBOutlet рд▓рд┐рдЦреЗрдВред рдЕрдм рдЖрдк рдорд╛рд░реНрдХрд░ рджреНрд╡рд╛рд░рд╛ рдЦреАрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЖрдИрдмреА рдореЗрдВ рдПрдХ рддрддреНрд╡ рдкрд░ рд╣реЛрд╡рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред



рдпрджрд┐ рдЖрдк рдХреЛрдб рдореЗрдВ рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ init() рдмрд╛рдж рд╕рднреА рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд╣реБрдБрдЪ рдпреЛрдЧреНрдп рд╣реЛрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЬрдм IB рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, IBOutlet рддрдХ рдкрд╣реБрдБрдЪ рдХреЗрд╡рд▓ awakeFromNib() рд╡рд┐рдзрд┐ рдореЗрдВ UIStoryboard рд╕реЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИ:

 // CustomView.swift func awakeFromNib() { super.awakeFromNib() square.layer.cornerRadius = 8 } 

UIViewController рдореЗрдВ рдЖрдИрдмреАрдП


рдореЗрд░реЗ рд╕реНрд╡рд╛рдж рдХреЗ рд▓рд┐рдП, рдирд┐рдпрдВрддреНрд░рдХ рдХреЛ рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЫреЛрдбрд╝ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдПред рдорд╛рдирдХ рд╕реЗ:

  • рдирд┐рдпрдВрддреНрд░рдг рд╕реЗ рд▓рдХреНрд╖реНрдп-рдХрд╛рд░реНрд░рд╡рд╛рдИ
  • UIViewController рдореЗрдВ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
  • рдмреНрд▓реЙрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
  • Notification рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛

рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, UIViewController рдХреЗрд╡рд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рд╡реНрдпрд╛рдкрд╛рд░рд┐рдХ рддрд░реНрдХ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕рднреА рдЪреАрдЬреЛрдВ рдХреЛ рдирд┐рдпрдВрддреНрд░рдХ рд╕реЗ рдмрд╛рд╣рд░ рд▓реЗ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рд╡рд┐рдХрд▓реНрдк рд╣реИ: рдПрдорд╡реАрдкреА, рд╡реАрдЖрдИрдкреА, рдЖрджрд┐ред

рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА


рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА рдореЗрдВ, рдЖрдк UIView рдкреНрд░рдХрд╛рд░ рдХреЛ рдкреВрд░реА рддрд░рд╣ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡рд╛рдВрдЫрд┐рдд рд╡рд░реНрдЧ рдХреЗ рд╕рд╛рде рд╕рдВрдкрддреНрддрд┐ рдШреЛрд╖рд┐рдд рдХрд░реЗрдВ, setter рдФрд░ getter рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░реЗрдВ, рд╡рд░реНрдЧ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реБрдП:

 // CustomViewController.m @interface CustomViewController @property (nonatomic) CustomView *customView; @end @implementation - (void)setView:(CustomView *)view{ [super setView:view]; } - (CustomView *)view { return (CustomView *)super.view; } @end 

рдЕрдВрдд


GitHub рдкрд░ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдЖрдк рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рдкреГрдердХреНрдХрд░рдг рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ: рд╡рд░реНрдЧ рдХрд╛ рд░рдВрдЧ рдЗрд╕рдХреА рд╕реНрдерд┐рддрд┐ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ (рд╣рд░реЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдпрд╣ рд╣рд░рд╛ рд╣реИ, рдЗрд╕рдХреЗ рдмрд╛рд╣рд░ рд▓рд╛рд▓ рд╣реИ)ред

рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╕реНрдХреНрд░реАрди, рдмреЗрд╣рддрд░ рдкреНрд░рднрд╛рд╡: рдирд┐рдпрдВрддреНрд░рдХ рдХрдо рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдХреЛрдб рдХреЛ рдЙрд╕рдХреЗ рд╕реНрдерд╛рди рдкрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХреЛрдб рдХреЛ рдХреЗрд╡рд▓ view рд▓рд┐рдП рдкреЛрд░реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ view , рд▓реЗрдХрд┐рди рдЗрдирдХреИрдкреНрд╕реБрд▓реЗрд╢рди рд╕реЗ рдХреЛрдб рдХреЛ рдЗрдВрдЯрд░реИрдХреНрдЯ рдХрд░рдирд╛ рдФрд░ рдкрдврд╝рдирд╛ рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдХрднреА-рдХрднреА рдХрд┐рд╕реА рдЕрдиреНрдп рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рд╕рд╛рде view рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, iPhone рдФрд░ iPad рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рдирд┐рдпрдВрддреНрд░рдХ рдХреАрдмреЛрд░реНрдб рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рддрд░реАрдХреЗ рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ view рдХреЛрдб рдХреЛ рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИред

рдореИрдВрдиреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдФрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд▓реЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдЗрд╕ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рд╣рд░ рдмрд╛рд░ рдЯреАрдо рдиреЗ рд╕рд░рд▓реАрдХрд░рдг рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рдХрд┐рдпрд╛ рдФрд░ рдЕрднреНрдпрд╛рд╕ рдХрд┐рдпрд╛ред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЖрдк рднреА рдЗрд╕рдХрд╛ рдЖрдирдВрдж рд▓реЗрдВрдЧреЗред рд╕рднреА рдЖрд╕рд╛рди UIViewController !

Source: https://habr.com/ru/post/hi432718/


All Articles