์นด์นด์ค์ ๋ธ๋ก๊ทธ ๊ฒ์ API๋ฅผ ์ฌ์ฉํ๋๋ฐ ๊ฒฐ๊ณผ๊ฐ์ HTMLํ๊ทธ๊ฐ ํฌํจ๋์ด ์์ด ์ด๋ฅผ ์ง์ฐ๊ณ ์ถ์๋ค! String์์ "]+>|"" ์ด ์น๊ตฌ๋ค์ ์ญ์ ํด์ฃผ๋ฉด ๋์๋ค! ]+> ์ด ๋ถ๋ถ์ด html ํ๊ทธ๋ฅผ ๊ฑฐ๋ฅด๋ ๋ถ๋ถ์ด๊ณ , " ์ด ๋ถ๋ถ์ด ์ ๊ทํํ์์ ํตํด ๊ฑธ๋ฌ์ง์ง ์๋ ๋ถ๋ถ์ ๋ ํ๋ฒ ๊ฑธ๋ฌ๋ด๋ ๋ถ๋ถ์ด๋ค func stripHTMLTags(from htmlString: String) -> String { var string = htmlString.replacingOccurrences(of: "]+>|"", with: "", options: .regularExpression, range: nil) return string } ํด๋์ค ๋ด์ ์ด๋ ๊ฒ ๋ฉ์๋๋ก ์์ฑํด์ฃผ์๊ณ , String์ Extension์ผ๋ก ๊ตฌํํด๋ ๋ ๋ฏ..
๐ Apple/SwiftUI
ํ๋กํผํฐ ๋ํผ @Environment @Environment๋ SwiftUI์์ ์ฌ์ฉ๋๋ ํ๋กํผํฐ ๋ํผ(wrapper)๋ก, SwiftUI ๋ทฐ์ ์ปจํ
์คํธ(Context)์ ๋ํ ์ ๋ณด๋ฅผ ์ ๊ณตํฉ๋๋ค. @Environment๋ฅผ ์ฌ์ฉํ๋ฉด ๋ทฐ์์ ์์คํ
์ ์ค์ ์ด๋ ์ํ์ ๊ฐ์ ์ปจํ
์คํธ์ ๋ํ ์ ๋ณด์ ์ก์ธ์คํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๋ทฐ๊ฐ ๋คํฌ ๋ชจ๋์์ ์คํ ์ค์ธ์ง ์ฌ๋ถ๋ฅผ ํ์ธํ๊ณ ํด๋น์ ๋ฐ๋ผ ๋ค๋ฅธ ์คํ์ผ์ ์ ์ฉํ ์ ์์ต๋๋ค. ๋ํ ์ฌ์ฉ์์ ๋ก์ผ์ผ์ ๋ง๊ฒ ํ
์คํธ๋ฅผ ํ์ํ๊ฑฐ๋, ์์คํ
์ ์ก์ธ์ค ๊ถํ์ ๋ฐ๋ผ ๋ค๋ฅธ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ๋ฑ์ ์์
๋ ๊ฐ๋ฅํฉ๋๋ค. @Environment๋ ์ผ๋ฐ์ ์ผ๋ก @State, @Binding, @ObservedObject ๋ฐ @EnvironmentObject์ ํจ๊ป ์ฌ์ฉ๋ฉ๋๋ค. ์ด๋ค์ ๋ชจ๋..
ViewBuilder๋? ํด๋ก์ ์์ ๋ทฐ๋ฅผ ๊ตฌ์ฑํ๋ ์ปค์คํด ๋งค๊ฐ๋ณ์ ์์ฑ์
๋๋ค. ViewBuilder๋ ์์ ๋ทฐ๋ฅผ ์์ฑํ๋ ํด๋ก์ ๋งค๊ฐ๋ณ์์ ๋ํ ๋งค๊ฐ๋ณ์ ์์ฑ์ผ๋ก ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋ฉ๋๋ค. ๋ทฐ ๋น๋๋ฅผ ์ฌ์ฉํด์ ํด๋น ํด๋ก์ ๊ฐ ์ฌ๋ฌ ์์ ๋ทฐ๋ฅผ ์ ๊ณตํ ์ ์๋๋กํฉ๋๋ค. ์ฆ, SwiftUI์์๋ ViewBuilder๋ฅผ ์ฌ์ฉํ์ฌ ํด๋ก์ ๋ด์์ ์ฌ๋ฌ ๊ฐ์ ๋ทฐ๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. ์ด๋ฌํ ๊ฐ๋
์ ํ์ฅํ์ฌ, ์ฌ์ฉ์๋ ์์ ๋ง์ ๋งค๊ฐ๋ณ์ ์์ฑ์ ๋ง๋ค์ด ํด๋ก์ ์์ ๋ทฐ๋ฅผ ์์ฑํ๋๋ก ์ง์ ํ ์ ์์ต๋๋ค. ์ด ๋งค๊ฐ๋ณ์ ์์ฑ์ ์ฌ์ฉํ๋ฉด, ๋ทฐ๋ฅผ ์์ฑํ๋ ์ฝ๋๋ฅผ ๋ณด๋ค ๊ฐ๊ฒฐํ๊ณ ๊ฐ๋
์ฑ ๋๊ฒ ์์ฑํ ์ ์์ผ๋ฉฐ, ์ฌ์ฌ์ฉ์ฑ๋ ๋์์ง๋๋ค. ์๋ฅผ ๋ค์ด, ์ฌ์ฉ์ ์ง์ ๋งค๊ฐ๋ณ์ ์์ฑ์ ์ฌ์ฉํ์ฌ ๋ทฐ์ ์์, ํ
๋๋ฆฌ ์คํ์ผ, ๋ฐฐ์น ๋ฐฉ์ ๋ฑ์ ์ฝ๊ฒ ๋ณ๊ฒฝํ ..
Button { } label: { Text("Next") .frame(width: 200.0, height: 100.0) .foregroundColor(.blue) .font(.system(size: 14, weight: .bold)) .overlay( RoundedRectangle(cornerRadius: 20) .stroke(.black, lineWidth: 5) ) } .background(.pink) .cornerRadius(20) //์์ cornerRadius๊ฐ๊ณผ ์ผ์น์ํค๊ธฐ ์์ง ๋ฒํผ ํด๋ฆญ์ ๋ถ์์ฐ์ค๋ฝ๋ค!?
NavigationView์์ iPad sidebar ์จ๊ธฐ๋ ๋ฐฉ๋ฒ .navigationViewStyle(StackNavigationViewStyle())
๋ค๋น๊ฒ์ด์
๋ฐ ์ค๋ณต๋์ด ๊ณ์ ์์ผ๋ NavigationView๋ ๋ฉ์ธ ๋ทฐ์๋ง ์ค์ ํ๊ณ NavigationLink๋ก ์ฐ๊ฒฐ๋๋ ํ์๋ทฐ์๋ NavigationView{}๋ฅผ ์์ฑํ์ง ์์๋ ๋๋ค.
1. ๋ด๋น๊ฒ์ด์
ํ์ดํ์ด ์ค์ฒฉ๋๋ ๋ฌธ์ >> ๊ฐ์ฅ ์ฒ์ ๋ทฐ์๋ง NavigationView๋ฅผ ๋ฃ์ด์ค๋ค. ๊ทธ ๋ค์์ ์์ด๋ ๋ทฐ์๋ ๋ฃ์ด์ฃผ์ง ์์๋ ๋๋ค. 2.navigationBarTitleDisplayMode ๊ฐ ์ํ๋๋ฐ๋ก ์๋ํ์ง ์๋ ๋ฌธ์ >> Link๋ก ์ฐ๊ฒฐ๋ ์ด์ ๋ทฐ์(ํด๋น ๋ทฐ๋ฅผ ํธ์ถํ๋ ๋ทฐ์) navigationBarTitleDisplayMode(.large) ํด์ฃผ์๋ค.
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnDM4a%2FbtrXypaSDJo%2FEjFiM3gckfmVdDZcAk7c7K%2Fimg.png)
1. ๋ทฐ ์ ์ฒด ๋ฐฐ๊ฒฝ ์ ๋ฐ๊พธ๊ธฐ (๋
ธ์น ํฌํจ) ZStack { Color.green.edgesIgnoringSafeArea(.all) } ZStack ์์ Color.green.edgesIgnoringSafeArea(.all) ๋ฅผ ์์ฑํด์ฃผ๋ฉด ๋๋ค. >> NavigationView๋ฅผ ์ฌ์ฉํ ๋ ์๋ ์ฝ๋์ฒ๋ผ NavigationView ์์ ZStack์ ๋ฃ์ด์ฃผ๋ฉด ๋๋ค. struct HomeView: View { var body: some View { NavigationView { ZStack { Color.red.edgesIgnoringSafeArea(.all) } } } } 2. ์ปจํธ๋กค ์์ ๋ฐฐ๊ฒฝ ์ ๋ฐ๊พธ๊ธฐ .background(.yellow) ์ํ๋ ์์ {ํ
์คํธ, ๋ฒํผ, ๋ทฐ ๋ฑ } ๋ค์ .backgro..