728x90 ๐ iOS/SwiftUI8 [iOS] SwiftUI - SignInWithAppleButton / ์ ํ ๋ก๊ทธ์ธ ์ปค์คํ ๋ฒํผ structure SignInWithAppleButton https://developer.apple.com/documentation/authenticationservices/signinwithapplebutton SwiftUI / iOS 14.0 + ์ค์ ํ ์ ์๋ ๊ฒ Labels continue signIn signUp Styles black white whiteOutline Sample code SignInWithAppleButton(.continue) { request in request.requestedScopes = [.fullName, .email] } onCompletion: { result in switch result { case .success(let authResults): print.. 2023. 10. 22. [iOS] SwiftUI - GeometryReader / View ํฌ๊ธฐ์ ์ขํ ๊ณ์ฐํ๊ธฐ https://developer.apple.com/documentation/swiftui/geometryreader ์ค์ ๊ณต๋ถํ๊ธฐ ๐ง GeometryReader GeometryReader ๋ ์ปจํ ์ธ ์ ํฌ๊ธฐ์ ์์น๋ฅผ ํจ์๋ก ๋ํ๋ด๋ ์ปจํ ์ด๋ ๋ทฐ๋ก, ๋ถ๋ชจ ๋ทฐ์ ์ฌ์ด์ฆ๋ฅผ ๋ฐํํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก๋ HStack, VStack, ZStack ์ ์ฌ์ฉํด์ ๋ ์ด์์์ ๋ฐฐ์นํ์ง๋ง, UIKit ์ ๊ฐ์ด ์ฌ์ฉํ ๊ฒฝ์ฐ ํน์ ์ธ๋ถ์ ์ธ ์กฐ์ ์ด ํ์ํ ๊ฒฝ์ฐ ์ฌ์ฉํ ๊ฒ์ผ๋ก ๋ณด์ด๋ค์ ๐ View ์ ํฌ๊ธฐ๋ ์ขํ๋ฅผ ๊ณ์ฐํ๊ณ ์ถ์๋ ํ์ฉ๋ ๊ฐ๋ฅํด๋ณด์ ๋๋ค! ๐ค GeometryReader ์ฌ์ฉํด์ ๋ ์ด์์ ๋ฐฐ์นํด๋ณด๊ธฐ GeometryReader ์์ฑ์์ ํด๋ก์ ์ธ์๋ GeometryProxy ๋ก ๋์ด์์ต๋๋ค. GeometryProxy : ์ปจํ .. 2023. 10. 21. [iOS/SwiftUI] @Environment ์์๋ณด๊ธฐ / ๋ชจ๋ฌ ๋ทฐ ๋ซ๊ธฐ dismiss ํ์ฉ Environment A property wrapper that reads a value from a view’s environment. @Environment ๋ SwiftUI ๋ทฐ ๋ด์์ ์ฑ์ ์ ์ญ์ ์ธ ์ํ์ ์์ฑ์ ์ ์ฅํ๊ณ ๊ณต์ ํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ํ๋กํผํฐ ๋ํผ์ด๋ค. ํด๋น ๋ํผ๋ฅผ ์ฌ์ฉํ๋ฉด SwiftUI ๊ฐ ํด๋น ๊ฐ์ ์ก์ธ์คํ๊ณ ๋ณ๊ฒฝ ์ฌํญ์ ์๋์ผ๋ก ๊ฐ์งํด์ ๋ทฐ๋ฅผ ์ ๋ฐ์ดํธ ํ ์ ์๋ค. Environment ํค๋ฅผ ์ฌ์ฉ์ ์ ์ํด์ ์ถ๊ฐ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ค. ์ฑ ์ ์ญ์์ ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ, ์ค์ , ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด ์ ์ฅ์ ์ ์ฉํ๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋๋ Environment ํค https://developer.apple.com/documentation/swiftui/environmentvalues \.dism.. 2023. 6. 15. [iOS/SwiftUI] @ViewBuilder, @resultBuilder ๊ฐ ๋ฌด์์ผ๊น? ViewBuilder A custom parameter attribute that constructs views from closures. @resultBuilder struct ViewBuilder SwiftUI ์์ ViewBuilder ๋ ํด๋ก์ ธ๋ฅผ ํตํด ๋ทฐ ๊ณ์ธต์ ์ ๋ฌํ ์ ์๋ ์์ฑ์ด๋ค. ViewBuilder ๋ฅผ ์ด์ฉํ๋ฉด ํจ์๋ ํด๋ก์ ๋ ์ฌ๋ฌ๊ฐ์ ๋ทฐ๋ฅผ ๋ฐํํ ์ ์๋ค. ์ฌ๋ฌ๊ฐ์ ๋ทฐ๋ฅผ ์ ๋ฌํด์ผํ๋ ์ํฉ์์ ์ฝ๋๋ฅผ ๊น๋ํ๊ฒ ์์ฑํ ์ ์๋ค. ๐ฏ resultBuilder ? ViewBuilder ๋ @resultBuilder ํ๋กํผ๋ฆฌ ๋ํผ๊ฐ ๋ถ์ด ์๋๋ฐ ํด๋น ์์ฑ์ Swift5.4 ์ ๋์ ๋์๊ณ ๊ธฐ์กด ๋ช ์นญ์ @_functionBuilder ์ด๋ค. SE-0289์ ResultBuilder resultBu.. 2023. 6. 7. [iOS] SwiftUI LazyVStack LazyHStack :: lazy load views ์๋ ํ์ธ์! ์ค๋์ SwiftUI ์ Lazy ํค์๋๋ฅผ ์ ๋ฆฌํ๋ ค๊ณ ํฉ๋๋ค. ์ง๋๋ฒ์ VStack, HStack, ZStack ์ ๋ํด์ ์ ๋ฆฌ๋ฅผ ํ์๋๋ฐ, ZStack ์ ์ ์ธํ๊ณ ๋ ์์ Lazy ๋ผ๋ ํค์๋๊ฐ ๋ถ์ LazyVStack, LazyHStack ์ด ์์ต๋๋ค ๐ Lazy ๋ผ๋ ํค์๋๊ฐ ๋ถ๋ ๊ฑด ์ด๋ค ์ฐจ์ด๊ฐ ์๋์ง ๊ถ๊ธํด์ ์ฐพ์๋ดค์ด์. ๐ LazyVStack LazyHStack :: lazy load views LazyVStack ์ VStack ๊ณผ ๋์ผํ๊ฒ vertical (์ธ๋ก) ๋ฐฉํฅ์ผ๋ก ํญ๋ชฉ๋ค์ ๋ณด์ฌ์ฃผ๋ ๋ทฐ์ด์ง๋ง, ๊ฐ ํญ๋ชฉ์ด ํ์ํ ๋๋ง ์์ฑํฉ๋๋ค. LazyHStack ์ Horizontal (๊ฐ๋ก) ๋ฐฉํฅ์ผ๋ก, LazyVStack ๊ณผ ๋ฐฉํฅ๋ง ๋ค๋ฅด๊ณ ๋์ผํฉ๋๋ค! Stack ์ด lazy ํ๋ค๋ ๊ฒ.. 2022. 6. 7. [iOS] SwiftUI property wrapper @State @Binding @State SwiftUI ๋ state ๋ก ์ ์ธํ ํ๋กํผํฐ์ ์ ์ฅ์๋ฅผ ๊ด๋ฆฌํ๋ค. ํด๋น ํ๋กํผํฐ์ ๊ฐ์ด ๋ณ๊ฒฝ๋ ๋, SwiftUI ๋ ๊ฐ์ ์์กดํ๊ณ ์๋ ๋ทฐ ๊ณ์ธต๊ตฌ์กฐ์ ๋ถ๋ถ์ ์ ๋ฐ์ดํธํ๋ค. State ํ๋กํผํฐ๋ ํ๋์ ๋ทฐ ์์์ ์ฌ์ฉ๋๋ ๊ฐ์ผ๋ก, ์ผ๋ฐ์ ์ผ๋ก private ํค์๋๋ฅผ ๋ถ์ฌ์ ์ฌ์ฉํ๋ค. State instance ๋ ๊ฐ(value)์ ์ฝ๊ณ ์ธ ์ ์๋ ํํ์ด๊ธฐ ๋๋ฌธ์, value ์ ๋์ผํ์ง๋ ์๋ค. state ๊ฐ ๊ฐ๊ณ ์๋ value ์ ์ก์ธ์คํ๊ธฐ ์ํด์๋, property name ์ ํตํด ์ ๊ทผํ๋ฉด ๋๋ค. ํด๋น ๊ฐ์ wrappedValue ์์ฑ์ ๋ฐํํ๋ค. wrappedValue ๋ state ๋ณ์๊ฐ ์ ์ฅํ๊ณ ์๋ ๊ฐ์ ์ ๊ทผํ๋ ํ๋กํผํฐ์ด์ง๋ง, wrappedValue ๋ฅผ ์ง์ ์ ๊ทผํด์๋ ์๋.. 2022. 6. 2. [iOS/SwiftUI] Text, Image ๊ธฐ๋ณธ ์ ๋ฆฌ + ์์คํ ์ด๋ฏธ์ง โ๏ธ Text Text ๋ ํ์ค ์ด์์ ์ฝ๊ธฐ ์ ์ฉ ๊ธ์๋ฅผ ํํํ๊ธฐ ์ํ View ์ ๋๋ค. Text initializer Text ์์ฑ์๋ ์ฌ๋ฌ๊ฐ์ง๊ฐ ์๋๋ฐ, ์ด๋ฏธ์ง๋ก๋ ์์ฑํ ์ ์๋๊ฒ UIKit ๊ณผ๋ ๋ค๋ฅธ๊ฑฐ ๊ฐ์์. NSAttributedString ์ ์ฌ์ฉํ๋ฉด ๊ฐ๋ฅํ๊ธด ํ์ง๋ง, ๊ธฐ๋ณธ์ ์ผ๋ก ์ด๋ฏธ์ง๋ฅผ ํ ์คํธ์ ์ฐ๊ฒฐํ ์ ์๊ฒ ์ ๊ณตํด์ฃผ๋ค์. init(String) → ๋จ์ ๋ฌธ์์ด, Localized ๊ด๋ จ ์์ฑ์๋ ๋ฐ๋ก ์์ด์. init(AttributedString) → NSAttributedString ์ด๋ ๋ค๋ฆ ๋๋ค. (+iOS15) init(Image) → ๋ค๋ฅธ Text ๋ค์ด๋ ์ฐ๊ฒฐํ๊ธฐ์ํ Image init(_ date: Date, style: Text.DataStyle) Text.DataStyle .. 2022. 5. 5. [iOS/SwiftUI] View, Stack ๊ธฐ๋ณธ ์ ๋ฆฌ SwiftUI ๋ UIKit ๊ณผ ๋น์ทํ๊ฒ iOS ์ฑ์ UI ๋ฅผ ๊ทธ๋ฆฌ๊ธฐ ์ํ ํ๋ ์์ํฌ์ ๋๋ค. iOS13 ๋ถํฐ ์ฌ์ฉ๊ฐ๋ฅํ์ง๋ง iOS14 ์ด์๋ถํฐ ๊ฐ๋ฅํ ๊ธฐ๋ฅ๋ค์ด ๋ง์, ๋ฏธ๋๋ฉ iOS14 ์์ ์ฃผ๋ก ์ฌ์ฉํ๋ ๊ฑธ๋ก ์๊ณ ์์ต๋๋ค! ๋ค์ ์ฌ์ด๋ํ๋ก์ ํธ๋ ํด๋ก ์ฝ๋ฉ์ SwiftUI ๋ก ๊ผญ ํด๋ด์ผ๊ฒ ์ด์!! ๊ทธ๋ฌ๊ธฐ ์ํ ์คํฐ๋ ์์~! ๐ช SwiftUI ์ ๋ํ ํน์ง - ์ ์ธ์ ๊ตฌ๋ฌธ์ ์ฌ์ฉํด ์ฌ์ฉ์ ์ธํฐํ์ด์ค์ ๊ธฐ๋ฅ์ ๋ช ์ํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค. - ๋๋๊ทธ ์ค ๋๋กญ์ผ๋ก UI ๋ฅผ ๊ตฌ์ฑํ ์ ์๊ณ , ๋ฏธ๋ฆฌ๋ณด๊ธฐ๊ฐ ๊ฐ๋ฅํ ์ธํฐํ์ด์ค๊ฐ ์์ต๋๋ค. (๊ณผ์ฐ ์์ฃผ์ธ์ง ์๋ฌธ์ด์ง๋ง์) - ์ฌ์ฉ์ ์ธํฐํ์ด์ค์ ์์ฑ์ ๋ฉ์๋ ์ฒด์ด๋(Method Chaining) ๋ฌธ๋ฒ์ ์ด์ฉํด ์ค์ ํฉ๋๋ค. View ํ๋กํ ์ฝ์ Instance method ๋ฅผ ๋ณด๋ฉด.. 2022. 4. 29. ์ด์ 1 ๋ค์ 728x90