PureLayout (рднрд╛рдЧ 1) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рд░реВрдк рд╕реЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рддрддреНрд╡ рдмрдирд╛рдирд╛

рдирдорд╕реНрдХрд╛рд░, рд╣реЗрдмреНрд░! рдореИрдВ рдЖрдкрдХреЗ рд▓рд┐рдП рд▓реЗрдЦ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реВрдБред

рдЫрд╡рд┐

рдЖрдЬ рдореИрдВ рдЖрдкрдХреЛ рд╕реНрдЯреЛрд░реАрдмреЛрд░реНрдб рдпрд╛ NIB рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛, рдХреЛрдб рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд░рд▓ рдореЛрдмрд╛рдЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрдирд╛рдиреЗ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдорд╛рд░реНрдЧрджрд░реНрд╢рди рдХрд░реВрдВрдЧрд╛ред рдореИрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд░реНрдЪрд╛ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдКрдВрдЧрд╛ рдХрд┐ рдХреМрди рд╕рд╛ рдмреЗрд╣рддрд░ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рд░ рдЪреАрдЬ рдХреЗ рдЕрдкрдиреЗ рдкреЗрд╢реЗрд╡рд░реЛрдВ рдФрд░ рд╡рд┐рдкрдХреНрд╖ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдПрдХ рдХрдбрд╝реА рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реВрдВред

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

рд╕рд┐рдВрд╣рд╛рд╡рд▓реЛрдХрди


рдпрд╣ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ Xcode 9 рдФрд░ рд╕реНрд╡рд┐рдлреНрдЯ 4 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛ред рдореИрдВ рдпрд╣ рднреА рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк Xcode, Swift рдФрд░ CocoaPods рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВред

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

PureLayout рдХреЗ рд╕рд╛рде рдкреНрд░реЛрдЧреНрд░рд╛рдо рдмрдирд╛рдиреЗ рдореЗрдВ рдмрд╛рдзрд╛рдПрдВ


рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗрдЯрдЕрдк


Xcode рд▓реЙрдиреНрдЪ рдХрд░рдХреЗ рд╢реБрд░реВ рдХрд░реЗрдВ -> "рдПрдХ рдирдпрд╛ Xcode рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ"ред "рдПрдХрд▓ рджреГрд╢реНрдп рдРрдк" рдЪреБрдиреЗрдВ рдФрд░ "рдЕрдЧрд▓рд╛" рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред

рдЫрд╡рд┐

рдЖрдк рдЬреИрд╕реЗ рдЪрд╛рд╣реЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдирд╛рдо рджреЗрдВ, рдореИрдВрдиреЗ рдЗрд╕реЗ рдХреЙрдиреНрдЯреЗрдХреНрдЯрдХрд╛рд░реНрдб рдХрд╣рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рд╕рднреА рддреАрди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рд╕рд╛рдлрд╝ рдХрд░реЗрдВ рдФрд░ рдЕрдкрдиреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрд╡рд┐рдлреНрдЯ рдЪреБрдиреЗрдВ, рдлрд┐рд░ рдЕрдЧрд▓рд╛ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред

рдЫрд╡рд┐

рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рд╕рд╣реЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдХрд┐рд╕реА рд╕реНрдерд╛рди рдХрд╛ рдЪрдпрди рдХрд░реЗрдВред рдЕрдирдЪреЗрдХ рдХрд░реЗрдВ "рдореЗрд░реЗ рдореИрдХ рдкрд░ Git рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА рдмрдирд╛рдПрдБред"

рдЪреВрдВрдХрд┐ рд╣рдо рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд╕реНрдЯреЛрд░реАрдмреЛрд░реНрдб рдпрд╛ рдПрдирдЖрдИрдмреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рдЗрд╕рд▓рд┐рдП "рдореЗрди.рд╕реНрдЯреЛрд░реАрдмреЛрд░реНрдб" рдХреЛ рд╣рдЯрд╛ рджреЗрдВ, рдЬреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдиреЗрд╡рд┐рдЧреЗрдЯрд░ рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

рдЫрд╡рд┐

рдЙрд╕рдХреЗ рдмрд╛рдж, рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдиреЗрд╡рд┐рдЧреЗрдЯрд░ рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ "рд╕рд╛рдорд╛рдиреНрдп" рдЯреИрдм рдкрд░, рддреИрдирд╛рддреА рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде рдЕрдиреБрднрд╛рдЧ рдвреВрдВрдвреЗрдВ рдФрд░ "рдореБрдЦреНрдп рдЗрдВрдЯрд░рдлрд╝реЗрд╕" рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рд╕рднреА рдЪреАрдЬрд╝реЛрдВ рдХреЛ рд╣рдЯрд╛ рджреЗрдВред рдпрд╣ рд╡рд╣ рд╣реИ рдЬреЛ Xcode рдХреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдЖрд╡реЗрджрди рд╢реБрд░реВ рд╣реЛрдиреЗ рдкрд░ рд╕реНрдЯреЛрд░реАрдмреЛрд░реНрдб рдлрд╝рд╛рдЗрд▓ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рд╣рдордиреЗ "Main.storyboard" рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП Xcode рдХреЛ рдпрд╣ рдлрд╝рд╛рдЗрд▓ рдирд╣реАрдВ рдорд┐рд▓реЗрдЧреА, рдЬрд┐рд╕рд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

рдЫрд╡рд┐

ViewController рдмрдирд╛рдирд╛


рдпрджрд┐ рдЖрдк рдЕрднреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рддреЛ рдПрдХ рдХрд╛рд▓реА рд╕реНрдХреНрд░реАрди рджрд┐рдЦрд╛рдИ рджреЗрдЧреА, рдХреНрдпреЛрдВрдХрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЕрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдХреЛрдИ рд╕реНрд░реЛрдд рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЕрдЧрд▓реЗ рднрд╛рдЧ рдореЗрдВ рд╣рдо рдЗрд╕реЗ рдмрдирд╛рдПрдВрдЧреЗред "AppDelegate.swift" рдЦреЛрд▓реЗрдВ рдФрд░ application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) рдЕрдВрджрд░ application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) , рдЗрд╕ рдХреЛрдб рдХреЗ рдЯреБрдХрдбрд╝реЗ рдХреЛ рдЪрд┐рдкрдХрд╛рдПрдБ:

 self.window = UIWindow(frame: UIScreen.main.bounds) let viewController = ViewController() self.window?.rootViewController = viewController self.window?.makeKeyAndVisible() 

рдпрд╣ рдХреЛрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдВрдбреЛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЖрдорддреМрд░ рдкрд░ "ViewController.swift" рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, "ViewController.swift" рдкрд░ рдЬрд╛рдПрдВ рдФрд░ viewDidLoad() рд╡рд┐рдзрд┐ рдореЗрдВ, рдирд┐рдореНрди рдкрдВрдХреНрддрд┐ рдбрд╛рд▓реЗрдВ:

 self.view.backgroundColor = .blue 

рдЕрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЪрд▓рд╛рдПрдВред

Xcode рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдмреАрдЪ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, "hotO" рд╣реЙрдЯрдХреАрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдФрд░ рдлрд┐рд░ рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдХреЛрдб рдЯреБрдХрдбрд╝рд╛ рдЬрд┐рд╕реЗ рдЖрдк рдвреВрдВрдв рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рдЙрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рджрд░реНрдЬ рдХрд░реЗрдВ, рдЬрд┐рдирд╕реЗ рдЖрдк рд╕реНрдХреНрд░реАрди рдкрд░ рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреЗред

рдЖрд╡реЗрджрди рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ рдЖрдкрдХреЗ рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдХреА рд╕реНрдХреНрд░реАрди рдкрд░ рдкрд░рд┐рдгрд╛рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:

рдЫрд╡рд┐

рдмреЗрд╢рдХ, рд╣рдо рдЗрд╕ рдШреГрдгрд┐рдд рдиреАрд▓реЗ рд░рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рдЗрд╕рд▓рд┐рдП рдмрд╕ рдкреГрд╖реНрдарднреВрдорд┐ рдХреЛ рдмрджрд▓рдХрд░ рд╕рдлреЗрдж рд░рдВрдЧ рдореЗрдВ рдмрджрд▓ .blue ред

рдпреВрдЖрдИ рд╡рд┐рдХрд╛рд╕


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

  • рдлрд▓реА
  • рдлрд▓реА рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ

рдпрд╣ рджреВрд╕рд░реА рдХрдорд╛рдВрдб рдХреЗ рдмрд╛рдж рдЖрдкрдХреЗ рдЯрд░реНрдорд┐рдирд▓ рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:

рдЫрд╡рд┐

рдЙрд╕рдХреЗ рдмрд╛рдж, Xcode рдХреЛ рдмрдВрдж рдХрд░реЗрдВ, рдлрд╛рдЗрдВрдбрд░ рдореЗрдВ рдлрд╝реЛрд▓реНрдбрд░ рдЦреЛрд▓реЗрдВ, рдФрд░ рдЖрдкрдХреЛ "<рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдирд╛рдо> .xcworkspace" рдвреВрдВрдврдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрдЧрд░ рд╣рдо рдХрднреА рдХреЛрдХреЛрдЖрдкреЛрдбреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рд╣рдо рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХреЛ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреЛрд▓реЗрдВрдЧреЗред рдЕрдм "рдкреЙрдбрдлрд╛рдЗрд▓" рдирд╛рдо рдХреА рдлрд╝рд╛рдЗрд▓ рдвреВрдВрдвреЗрдВ рдФрд░ рд╡рд╛рдХреНрдпрд╛рдВрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ use_frameworks! рддрд╣рдд рдирд┐рдореНрди рдкрдВрдХреНрддрд┐ use_frameworks!

 pod тАЬPureLayoutтАЭ 

рдЕрдкрдиреЗ рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ рдлрд┐рд░ рд╕реЗ pod install рдХрд░реЗрдВ, рдФрд░ рдлрд┐рд░ "рдХрдорд╛рдВрдб + рдмреА" рджрдмрд╛рдХрд░ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВред

рдХреЙрдлрд╝реА рддреЛрдбрд╝рдирд╛


рдЕрдм рдЬрдм рд╕рдм рдХреБрдЫ рд╕реЗрдЯ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рдЕрд╕рд▓реА рдХрд╛рдо рд╕реЗред "ViewController.swift" рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рдПрдХ рдХрдк рдХреЙрдлреА рдкрдХрдбрд╝реЛ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рдЕрдВрддрд┐рдо рдкрд░рд┐рдгрд╛рдо рдЬреИрд╕рд╛ рджрд┐рдЦреЗрдЧрд╛:

рдЫрд╡рд┐

ImageView рдмрдирд╛рдПрдВ


import UIKit рддрд╣рдд import PureLayout рд▓рд╛рдЗрди рдбрд╛рд▓реЗрдВ рддрд╛рдХрд┐ рдЖрдк рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХреЗрдВред рдлрд┐рд░, рдХреНрд▓рд╛рд╕ рдбрд┐рдХреНрд▓реЗрд░реЗрд╢рди рдФрд░ рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдмрд╛рд╣рд░, рд╣рдо рдЖрд▓рд╕реА (рдЖрд▓рд╕реА) Avatar ImageView рдЪрд░ рдмрдирд╛рдХрд░ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ:

 lazy var avatar: UIImageView = { let imageView = UIImageView(image: UIImage(named: "avatar.jpg")) imageView.autoSetDimensions(to: CGSize(width: 128.0, height: 128.0)) imageView.layer.borderWidth = 3.0 imageView.layer.borderColor = UIColor.lightGray.cgColor imageView.layer.cornerRadius = 64.0 imageView.clipsToBounds = true return imageView }() 

рдЫрд╡рд┐ рдХреЗ рд▓рд┐рдП, рдбреЗрд╕реНрдХрдЯреЙрдк рдкрд░ рдХрд┐рд╕реА рднреА рдЫрд╡рд┐ рдХреЛ рд╕рд╣реЗрдЬреЗрдВ рдЬрд┐рд╕реЗ рдЖрдк рдПрдХ рдЕрд╡рддрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рдФрд░ рдЗрд╕реЗ <рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдирд╛рдо> рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ Xcode рдореЗрдВ рдЦреАрдВрдЪреЗрдВ, рдЬрд┐рд╕реЗ рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ "рдХреЙрдиреНрдЯреИрдХреНрдЯрдХрд╛рд░реНрдб" рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ "рдХреЙрдкреА рдЖрдЗрдЯрдо" рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдиреЗ рдкрд░ рдЪреЗрдХ рдХрд░реЗрдВ ред

рдЫрд╡рд┐

рдЙрд╕рдХреЗ рдмрд╛рдж, "avatar.jpg" рдХреЗ рдмрдЬрд╛рдп UIImage рдШреЛрд╖рдгрд╛ рдореЗрдВ рдЗрд╕рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рд╕рд╛рде рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╛рдо рд▓рд┐рдЦреЗрдВред

рдЖрдк рдореЗрдВ рд╕реЗ рдЬреЛ рд▓реЛрдЧ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ, рдЖрд▓рд╕реА рдЪрд░ рд╕рд╛рдорд╛рдиреНрдп рдЪрд░ рдХреЗ рд╕рдорд╛рди рд╣реЛрддреЗ рд╣реИрдВ, рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдЖрд░рдореНрдн рдореЗрдВ (рдпрд╛ рдХреБрдЫ рдореЗрдореЛрд░реА рд╕реНрдкреЗрд╕ рдЖрд╡рдВрдЯрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ) рдЬрдм рддрдХ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдкрд╣рд▓реА рдмрд╛рд░ рдЬрд░реВрд░рдд рди рд╣реЛ рдпрд╛ рдмреБрд▓рд╛рдпрд╛ рди рдЬрд╛рдПред ред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рджреГрд╢реНрдп рдирд┐рдпрдВрддреНрд░рдХ рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрд▓рд╕реА рдЪрд░ рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдмрд╛рдж рдХреЗ рдмрд┐рдВрджреБ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реИрдВ рдЬрдм рдЙрдиреНрд╣реЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬреЛ рдЕрдиреНрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╢рдХреНрддрд┐ рдФрд░ рдореЗрдореЛрд░реА рд╕реНрдкреЗрд╕ рдмрдЪрд╛рддрд╛ рд╣реИред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдШрдЯрдХреЛрдВ рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдХрд░рддреЗ рд╕рдордп рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧреА рд╣реИред

PureLayout рдХрд╛рд░реНрд░рд╡рд╛рдИ рдореЗрдВ


рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рдЕрдВрджрд░ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд▓рд╛рдЗрди imageView.autoSetDimensions (to: CGSize (width: 128.0, height: 128.0)) рдПрдХреНрд╢рди рдореЗрдВ рдкреНрдпреЛрд░рд▓рд╛рдпрдЖрдЙрдЯ рд╣реИред рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ, рд╣рдо UIImageView рдХреА рдКрдВрдЪрд╛рдИ рдФрд░ рдЪреМрдбрд╝рд╛рдИ рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реАрдорд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ NSLayoutConstraints рд╡рд┐рд╢рд╛рд▓ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛ рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдкреНрд░реЛрдЧреНрд░рд╛рдо рдмрдирд╛рдиреЗ рдкрд░ рдкреНрд░рддрд┐рдмрдВрдз рд▓рдЧрд╛ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕ рдЕрджреНрднреБрдд рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реЗ рдкреНрдпрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЗрд╕ рдЫрд╡рд┐ рдХреЛ рдЧреЛрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЗрд╕рдХреЗ рдХреЛрдгреАрдп рддреНрд░рд┐рдЬреНрдпрд╛ рдХреЛ рдЗрд╕рдХреА рдЪреМрдбрд╝рд╛рдИ рдпрд╛ рдКрдБрдЪрд╛рдИ рд╕реЗ рдЖрдзрд╛ рдкрд░ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐ 64.0 рдЕрдВрдХ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, clipsToBounds рдкреНрд░реЙрдкрд░реНрдЯреА рдХреЛ true рд╕реЗрдЯ рдХрд░реЗрдВ, рдЬреЛ рдЫрд╡рд┐ рдХреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЙрд╕ рд╕рдм рдХреБрдЫ рдХреЛ рдХреНрд▓рд┐рдк рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рддреНрд░рд┐рдЬреНрдпрд╛ рдХреЗ рдмрд╛рд╣рд░ рд╣реИ рдЬреЛ рд╣рдо рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВред

рдлрд┐рд░ рд╣рдо рдПрдХ UIView рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВ рдЬреЛ рдЧреНрд░реЗ рдкреЗрдВрдЯ рдЕрд╡рддрд╛рд░ рдХреЗ рдкреАрдЫреЗ рджреГрд╢реНрдп рдХреЗ рд╢реАрд░реНрд╖ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рдЗрд╕ рджреГрд╢реНрдп рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЖрд▓рд╕реА рдЪрд░ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░реЗрдВ:

 lazy var upperView: UIView = { let view = UIView() view.autoSetDimension(.height, toSize: 128) view.backgroundColor = .gray return view }() 

рд╕рдмрд╡реНрдпреВ рдЬреЛрдбрд╝рдирд╛


рдЖрдЧреЗ рдмрдврд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЪрд▓рд┐рдП рдПрдХ func addSubviews () рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рддреЗ рд╣реИрдВ, рдЬреЛ рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЧрдП рд╡рд┐рдЪрд╛рд░реЛрдВ (рдФрд░ рдЕрдиреНрдп рд╕рднреА рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдо рдмрдирд╛рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ) рдХреЛ рд╡реНрдпреВ рдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИ:

 func addSubviews() { self.view.addSubview(avatar) self.view.addSubview(upperView) } 

рдЕрдм viewDidLoad (): self.addSubviews () рд▓рд┐рдП рдирд┐рдореНрди рдкрдВрдХреНрддрд┐ рдЬреЛрдбрд╝реЗрдВ

рдкреНрд░рддрд┐рдмрдВрдз рд▓рдЧрд╛рдирд╛


рдмрд╕ рд╣рдо рдХрд┐рддрдиреА рджреВрд░ рдЖ рдЧрдП рд╣реИрдВ рдЗрд╕рдХрд╛ рдЕрдВрджрд╛рдЬрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рдЗрди рджреЛ рдкреНрд░рдХрд╛рд░реЛрдВ рдкрд░ рд╕реАрдорд╛рдПрдВ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВред рдПрдХ рдЕрдиреНрдп рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдПрдВ рдЬрд┐рд╕реЗ func setupConstraints() рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдмрд╛рдзрд╛рдУрдВ рдХреЛ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░реЗрдВ:

 func setupConstraints() { avatar.autoAlignAxis(toSuperviewAxis: .vertical) avatar.autoPinEdge(toSuperviewEdge: .top, withInset: 64.0) upperView.autoPinEdge(toSuperviewEdge: .left) upperView.autoPinEdge(toSuperviewEdge: .right) upperView.autoPinEdgesToSuperviewEdges(with: .zero, excludingEdge: .bottom) } 

рдЕрдм рдЕрдВрджрд░ рджреЗрдЦреЗрдВ setupConstraints() viewDidLoad() рдХреЙрд▓ setupConstraints() , рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░: self.setupConstraints() ред addSubviews() рдХреЙрд▓рд┐рдВрдЧ рдХреЗ рдмрд╛рдж рдЗрд╕ AFTER рдХреЛ рдЬреЛрдбрд╝реЗрдВред рдпрд╣ рдЕрдВрддрд┐рдо рдирд┐рд╖реНрдХрд░реНрд╖ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:

рдЫрд╡рд┐

рдЕрд╡рддрд╛рд░ рдХреЛ рд╕рдмрд╕реЗ рдЖрдЧреЗ рд▓рд╛рдПрдВ


рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ рд╡рд╣ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдореИрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рдорд╛рд░рд╛ upperView рдЕрд╡рддрд╛рд░ рдХреЗ рдКрдкрд░ рд╕реНрдерд┐рдд рд╣реИред рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рд╣рдордиреЗ upperView subviews рд╕реЗ рдкрд╣рд▓реЗ upperView рд░реВрдк рдореЗрдВ рдПрдХ рдЕрд╡рддрд╛рд░ рдЬреЛрдбрд╝рд╛, рдФрд░ рдЪреВрдВрдХрд┐ рдпреЗ upperView рдХрд┐рд╕реА рди рдХрд┐рд╕реА рд░реВрдк рдореЗрдВ рд╕реНрдЯреИрдХ рдкрд░ рд╕реНрдерд┐рдд рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдпрд╣ рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓рддрд╛ рд╣реИред рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдмрд╕ рдЗрди рджреЛ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдПрдХ рдФрд░ рдЪрд╛рд▓ рд╣реИ рдЬреЛ рдореИрдВ рдЖрдкрдХреЛ рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдЕрд░реНрдерд╛рддреН: self.view.bringSubview (toFront: avatar) ред

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

рдЫрд╡рд┐

рдЦрдВрдбрд┐рдд рдирд┐рдпрдВрддреНрд░рдг рдмрдирд╛рдПрдБ


рдЕрдЧрд▓рд╛, рд╣рдо рдПрдХ рдЦрдВрдбрд┐рдд рдирд┐рдпрдВрддреНрд░рдг рдмрдирд╛рдПрдВрдЧреЗ, рдЬреЛ рдПрдХ рдЧреНрд░реЗ рдмрд╛рд░ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рддреАрди рдЦрдВрдб рд╣реИрдВред рджрд░рдЕрд╕рд▓, рдПрдХ рдЦрдВрдбрд┐рдд рдирд┐рдпрдВрддреНрд░рдг рдмрдирд╛рдирд╛ рдЖрд╕рд╛рди рд╣реИред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдп рдХрд░реЗрдВ:

 lazy var segmentedControl: UISegmentedControl = { let control = UISegmentedControl(items: ["Personal", "Social", "Resum├и"]) control.autoSetDimension(.height, toSize: 32.0) control.selectedSegmentIndex = 0 control.layer.borderColor = UIColor.gray.cgColor control.tintColor = .gray return control }() 

рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рд╕рдм рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рд╣реИ, рдПрдХрдорд╛рддреНрд░ рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдЖрд░рдВрднреАрдХрд░рдг рдХреЗ рдмрд╛рдж рд╣рдо рдЗрд╕реЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреА рдПрдХ рд╕рд░рдгреА рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ, рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рд╣рдорд╛рд░реЗ рд╡рд╛рдВрдЫрд┐рдд рд╡рд░реНрдЧреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЗ рд╢реАрд░реНрд╖рдХ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреА рд╣реИред рд╣рдордиреЗ selectedSegmentIndex рдХреЛ 0 рдкрд░ рд╕реЗрдЯ selectedSegmentIndex рд╣реИ, рдЬреЛ рдХрд┐ рдЖрд░рдВрднрд┐рдХрдХрд░рдг рдХреЗ рджреМрд░рд╛рди рдкрд╣рд▓реЗ рдЦрдВрдб рдХреЛ рдЪреБрдирдиреЗ / рдЪреБрдирдиреЗ рдХреЗ рд▓рд┐рдП рдЦрдВрдбрд┐рдд рдирд┐рдпрдВрддреНрд░рдг рдХреЛ рдмрддрд╛рддрд╛ рд╣реИред рдмрд╛рдХреА рдХреЗ рд╕рд╛рде рдЦреЗрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рд░реНрдл рдПрдХ рд╢реИрд▓реА рд╣реИред

рдЕрдм рд╣рдо рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ addCubviews(): self.view.addSubview(segmentedControl) рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрдд рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрдВрдХреНрддрд┐ рдбрд╛рд▓рдХрд░ рдПрдХ addCubviews(): self.view.addSubview(segmentedControl) рдХреЗ рд░реВрдк рдореЗрдВ addCubviews(): self.view.addSubview(segmentedControl) рдФрд░ рдЗрд╕рдХреА рд╕реАрдорд╛рдПрдБ рдЗрд╕ рддрд░рд╣ рд╣реЛрдВрдЧреА:

  segmentedControl.autoPinEdge(toSuperviewEdge: .left, withInset: 8.0) segmentedControl.autoPinEdge(toSuperviewEdge: .right, withInset: 8.0) segmentedControl.autoPinEdge(.top, to: .bottom, of: avatar, withOffset: 16.0) 

рд╣рдо рдЦрдВрдбрд┐рдд рдирд┐рдпрдВрддреНрд░рдг рдХреЛ рдмрддрд╛рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рдЗрд╕реЗ рдЕрдкрдиреЗ рд╕реБрдкрд░рд╡рд╛рдЗрд╡реЗ рдХреЗ рдмрд╛рдИрдВ рдУрд░ рд╕рдВрд▓рдЧреНрди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╣рдо рдЕрдВрддрд░рд╛рд▓ рдХреЛ рдереЛрдбрд╝рд╛ рдмрдврд╝рд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕реЗ рд╕реАрдзреЗ рд╕реНрдХреНрд░реАрди рдХреЗ рдХрд┐рдирд╛рд░реЗ рдкрд░ рд╕рдВрд▓рдЧреНрди рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдзреНрдпрд╛рди рджреЗрдВ, рдореИрдВ рддрдерд╛рдХрдерд┐рдд рдЖрда-рдмрд┐рдВрджреБ рдЧреНрд░рд┐рдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдЬрд╣рд╛рдВ рд╕рднреА рджреВрд░реА рдФрд░ рдЖрдХрд╛рд░ рдЖрда рдХреЗ рдЧреБрдгрдХ рд╣реИрдВред рдореИрдВ рдЦрдВрдбрд┐рдд рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рджрд╛рдИрдВ рдУрд░ рд╡рд╣реА рдХрд░рддрд╛ рд╣реВрдВред рдЕрдВрддрд┐рдо рд╕реАрдорд╛ рдХреЗ рд▓рд┐рдП, рд╡рд╣ рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ 16 рдЕрдВрдХреЛрдВ рдХреЗ рдЕрдВрддрд░рд╛рд▓ рдХреЗ рд╕рд╛рде рдЕрд╡рддрд╛рд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рд╢реАрд░реНрд╖ рд╕рдВрд▓рдЧреНрди рдХрд░реЗрдВред

func setupConstraints() рдореЗрдВ рдЙрдкрд░реЛрдХреНрдд рд╕реАрдорд╛рдПрдБ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж func setupConstraints() рдХреЛрдб рдХреЛ рдЪрд▓рд╛рдПрдВ рдФрд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

рдЫрд╡рд┐

рдПрдХ рдмрдЯрди рдЬреЛрдбрд╝рдирд╛


рдЕрдм рд╣рдо рдкрд╛рдареНрдпрдкреБрд╕реНрддрдХ рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдЕрдВрддрд┐рдо рднрд╛рдЧ рдХреЛ рдкрд╛рд╕ рдХрд░реЗрдВрдЧреЗ, рдЬреЛ "рд╕рдВрдкрд╛рджрди" рдмрдЯрди рд╣реИред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЖрд▓рд╕реА рдЪрд░ рдЬреЛрдбрд╝реЗрдВ:

 lazy var editButton: UIButton = { let button = UIButton() button.setTitle("Edit", for: .normal) button.setTitleColor(.gray, for: .normal) button.layer.cornerRadius = 4.0 button.layer.borderColor = UIColor.gray.cgColor button.layer.borderWidth = 1.0 button.tintColor = .gray button.backgroundColor = .clear button.autoSetDimension(.width, toSize: 96.0) button.autoSetDimension(.height, toSize: 32.0) return button }() 

рдЪрд┐рдВрддрд╛ рдордд рдХрд░реЛ рдХрд┐ рдЖрд░рдВрднреАрдХрд░рдг рдХрд┐рддрдирд╛ рдмрдбрд╝рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдореИрдВрдиреЗ button.setTitle рдФрд░ button.setTitleColor button.setTitle рдФрд░ button.setTitleColor рдХреЛ рдХреИрд╕реЗ рд╕реЗрдЯ рдХрд░рдХреЗ рд╢реАрд░реНрд╖рдХ рдФрд░ рдЙрд╕рдХрд╛ рд░рдВрдЧ рд╕реЗрдЯ рдХрд┐рдпрд╛ рд╣реИ button.setTitleColor ред рдХреБрдЫ рдХрд╛рд░рдгреЛрдВ рд╕реЗ, рд╣рдо рд╕реАрдзреЗ рдЕрдкрдиреЗ titleLabel рдкрд╣реБрдБрдЪрдХрд░ рдПрдХ рдмрдЯрди рдХрд╛ рд╢реАрд░реНрд╖рдХ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рдмрдЯрди рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рд░рд╛рдЬреНрдп рд╣реИрдВ, рдФрд░ рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд░рд╛рдЬреНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реЗрдбрд░ / рд░рдВрдЧ рд░рдЦрдиреЗ рдореЗрдВ рд╕рд╣рдЬ рд╣реЛрдВрдЧреЗред

рдЕрдм рдмрдЯрди рдХреЛ рдмрд╛рдХреА рдШрдЯрдХреЛрдВ рдХреА рддрд░рд╣ рдПрдХ рд╕рдмрд╡реНрдпреВ рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ, рдФрд░ рдирд┐рдореНрди рдкреНрд░рддрд┐рдмрдВрдз рдЬреЛрдбрд╝реЗрдВ рддрд╛рдХрд┐ рдпрд╣ рджрд┐рдЦрд╛рдИ рджреЗ рдХрд┐ рдпрд╣ рдХрд╣рд╛рдБ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:

 editButton.autoPinEdge(.top, to: .bottom, of: upperView, withOffset: 16.0) editButton.autoPinEdge(toSuperviewEdge: .right, withInset: 8.0) 

рдпрд╣рд╛рдВ рд╣рдордиреЗ рдмрдЯрди рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рд╕рд╣реА рдФрд░ рдКрдкрд░реА рд╕реАрдорд╛рдПрдВ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреА рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдордиреЗ рдЗрд╕реЗ рдПрдХ рдЖрдХрд╛рд░ рджрд┐рдпрд╛ рд╣реИ, рдЗрд╕рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдФрд░ рдХреБрдЫ рдФрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреАред рдЕрдм рдЕрдВрддрд┐рдо рдкрд░рд┐рдгрд╛рдо рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЪрд▓рд╛рдПрдБ:

рдЫрд╡рд┐

рд╣рд╛рд▓ рдХреЗ рдХреБрдЫ рдиреЛрдЯ


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

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


All Articles