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 рд╡реАрдбрд┐рдпреЛ рджреЗрдЦреЗрдВ ред рдкреНрд░рд▓реЗрдЦрди 
рдпрд╣рд╛рдБ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ 
рд╣реИ ред
рдЬреАрдердм рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рд▓рд┐рдВрдХ 
рдпрд╣рд╛рдВ рд╣реИ ред