SwiftUI рдХрд╛ рддреНрд╡рд░рд┐рдд рдкрд░рд┐рдЪрдп

SwiftUI Xcode рдкрд░ рдпреВрдЬрд░ рдЗрдВрдЯрд░рдлреЗрд╕ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рддрд░реАрдХрд╛ рд╣реИред рдпрджрд┐ рдЖрдк SwiftUI рдХрд╛ рддреНрд╡рд░рд┐рдд рдкрд░рд┐рдЪрдп рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдмреНрд▓реЙрдЧ рдкреЛрд╕реНрдЯ рдЖрдкрдХреЗ рд▓рд┐рдП рд╣реИред

рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП SwiftUI рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВред рдЗрд╕рдХреЗ рд▓рд┐рдП рдиреНрдпреВрдирддрдо рд╕рд┐рд╕реНрдЯрдо рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ рд╣реИрдВ MacOS Catalina рдФрд░ Xcode 11. рдПрдХ рдирдпрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ "рдлрд╝рд╛рдЗрд▓> рдирдпрд╛> рдкреНрд░реЛрдЬреЗрдХреНрдЯ ..." , "рд╕рд┐рдВрдЧрд▓ рд╡реНрдпреВ рдРрдк" рдЪреБрдиреЗрдВ рдФрд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ "рдпреВрдЬрд░ рдЗрдВрдЯрд░рдлреЗрд╕: рд╕реНрд╡рд┐рдлреНрдЯрдпреВрдЖрдИ" рдЪреБрдирд╛ рдЧрдпрд╛ рд╣реИ ред



рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧреА:



рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдиреЗ рджреЗрдЦрд╛ рд╣реЛрдЧрд╛, рдЕрдм рдЖрдк рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рдкрд░ рддреБрд░рдВрдд рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрди рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЯреЗрдХреНрд╕реНрдЯ рдХреЛ "рд╣реИрд▓реЛ, рд╣реИрдмрд░!" рдореЗрдВ рдмрджрд▓рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рдХреВрд▓ рд╣рд╛рдБ?

рдпрджрд┐ рдХреЛрдИ рдкрд░рд┐рд╡рд░реНрддрди рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ (рдКрдкрд░реА рджрд╛рдПрдВ рдХреЛрдиреЗ рдореЗрдВ)ред рдпрджрд┐ рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ - рд╕рдВрдкрд╛рджрдХ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдХреИрдирд╡рд╛рд╕ рдЪрдпрдирд┐рдд рд╣реИ (тМШOptions + ommCommand + .Enter) ред


рджреЗрдЦреЗрдВ, рдкрд╛рда, рдвреЗрд░ ...


рдпрджрд┐ рдЖрдк ContentView.swift рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ:

struct ContentView: View { var body: some View { Text(", !") } } 

рдпрд╣рд╛рдБ рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ ContentView> рдмреЙрдбреА рдореЗрдВ рдПрдХ рдЯреЗрдХреНрд╕реНрдЯ рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ "Hello, Habr!" рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рдПрдХ рдФрд░ рдкрд╛рда рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рд╕реАрдзреЗ рд╢рд░реАрд░ рджреГрд╢реНрдп рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ Xcode рд╢рдкрде рд▓реЗрдЧрд╛ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкрд╣рд▓реЗ HStack рдпрд╛ VStack рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдХрдорд╛рдВрдб рджрдмрд╛рдПрдВ рдФрд░ рдЯреЗрдХреНрд╕реНрдЯ (ommCommand + Text) рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ, рдлрд┐рд░ "рдПрдореНрдмреЗрдб рдЗрдирд╕реНрдЯреИрдХ" рдЪреБрдиреЗрдВ ред



рдпрд╣ рдХрдорд╛рдВрдб рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдПрдХ HStack рдмрдирд╛рдПрдЧреА рдФрд░ рд╣рдорд╛рд░реЗ рдЯреЗрдХреНрд╕реНрдЯ рдХреЛ рд╡рд╣рд╛рдВ рдЬреЛрдбрд╝реЗрдЧреА ред рдЕрдм рдЖрдк рдПрдХ рдФрд░ рдкрд╛рда рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ:

 struct ContentView: View { var body: some View { HStack { Text(",") Text("!") } } } 

рд╕реНрд╡рд┐рдлреНрдЯреБрдИ рдЗрдВрд╕реНрдкреЗрдХреНрдЯрд░


рдпрджрд┐ рдЖрдк тАЬandCommand + TextтАЭ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ тАЬShow SwiftUI InspectorтАжтАЭ рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдПрдХ рдирд┐рд░реАрдХреНрд╖рдХ рдЦреБрд▓реЗрдЧрд╛ рдЬрд╣рд╛рдБ рдЖрдк рдкрд╛рда рдЧреБрдгреЛрдВ рдХреЛ рдиреЗрддреНрд░рд╣реАрди рд░реВрдк рд╕реЗ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЗрдВрд╕реНрдкреЗрдХреНрдЯрд░ "рдлрд╝реЙрдиреНрдЯ" рдХреЛ "рд▓рд╛рд░реНрдЬ рдЯрд╛рдЗрдЯрд▓" рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ , рддреЛ рдХреЛрдб рднреА .font (.largeTitle) рдореЗрдВ рдмрджрд▓ рдЬрд╛рдПрдЧрд╛ред рдмрд╣реБрдд рд╕рд░рд▓:



рд░рд╛рдЬреНрдп рдХреНрдпрд╛ рд╣реИ?


рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд░рд╛рдЬреНрдп рдХреНрдпрд╛ рд╣реИ , рдЖрдЗрдП рдХреБрдЫ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдЬреЛрдбрд╝реЗрдВред рд╣рдо рджреЛрд╣рд░рд╛рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдордиреЗ рдкрд╣рд▓реЗ рдХреНрдпрд╛ рдХрд┐рдпрд╛ рдерд╛: "whatCommand + HStack" , "VStack рдореЗрдВ рдПрдореНрдмреЗрдб рдХрд░реЗрдВ " рдЪреБрдиреЗрдВ, рдлрд┐рд░ рдЗрд╕ VStack рдореЗрдВ рдмрдЯрди рдЬреЛрдбрд╝реЗрдВ:

 struct ContentView: View { @State var tapCount = 0 var body: some View { VStack { HStack { Text(",") .font(.largeTitle) .foregroundColor(Color.green) Text("!") .font(.largeTitle) .fontWeight(.bold) } Button(action: { self.tapCount += 1 }) { Text("Tap count \(tapCount)") .font(.title) } } } } 

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

рд▓рд╛рдЗрд╡ рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди


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



рдЕрдм рдлрд┐рд░ рд╕реЗ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рд╣рд░ рдмрд╛рд░ рдЬрдм рдЖрдк рдмрдЯрди рджрдмрд╛рддреЗ рд╣реИрдВ, рддреЛ рдорд╛рди рдмрджрд▓ рдЬрд╛рдПрдЧрд╛ред

рдЖрдЧреЗ рдХреНрдпрд╛ рд╣реИ?


рдЕрдм рдЖрдкрдХреЗ рдкрд╛рд╕ SwiftUI рдХреА рдореВрд▓ рдЕрд╡рдзрд╛рд░рдгрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдВ рдЖрдкрдХреЛ SwiftUI рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдкрдврд╝рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ, SwiftUI рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ WWDC рд╡реАрдбрд┐рдпреЛ рджреЗрдЦреЗрдВ ред рдкреНрд░рд▓реЗрдЦрди рдпрд╣рд╛рдБ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред

рдЬреАрдердм рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рд▓рд┐рдВрдХ рдпрд╣рд╛рдВ рд╣реИ ред

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


All Articles