SwiftUI107 7. PreferenceKey / Custom Navigation Bar 🦁PreferenceKey / Custom Navigation Bar🦁 PreferenceKey가 무엇인지? 그리고 PreferenceKey를 활용해서 Navigation 타이틀이 상단으로 자연스럽게 이동하는 것을 직접 구현해보자. 먼저 공식문서를 읽어봤다. https://developer.apple.com/documentation/swiftui/preferencekey PreferenceKey | Apple Developer Documentation A named value produced by a view. developer.apple.com - 뷰에서 생성되는 이름있는 value. - 특정 뷰에 여러 개의 하위 뷰가 있을 때, 해당 뷰는 동일한 PreferenceKey를 가진 하위 뷰들의 값들을 자.. 2023. 6. 23. 6. @ViewBuilder / 뷰 빌더 🦁@ViewBuilder / 뷰 빌더🦁 SwiftUI에서 @ViewBuilder는 클로저로부터 여러 뷰를 만들 수 있는 커스텀 파라미터 속성래퍼이다. 뷰를 생성하는 함수나 프로퍼티에 적용되고, @ViewBuilder가 적용되어 있으면 여러 개의 뷰를 반환할 수 있고, 이 뷰들은 자동으로 단일 뷰로 결합된다.이는 복잡한 뷰 계층 구조를 생성하는데 유용하다. 만약 화면 상단의 헤더, 즉 제목이나 간단한 설명, 이미지가 들어가는 뷰를 반복해서 써야 하는 경우라면? struct HeaderViewRegular: View { let title: String let description: String? let iconName: String? var body: some View { VStack(alignment: ... 2023. 6. 22. 5. Generic 제네릭 🦁Generic 제네릭🦁 Swift에서 제네릭(Generic)은 코드의 재사용성, 유연성을 높이기 위한 기능이다. 제네릭을 사용하면 함수, 구조체, 클래스, 열거형 등에서 일반적인 타입 대신 여러 타입을 쓸 수 있다. (타입을 매개변수화 후 이후에 실제 타입을 결정함) 제네릭을 사용하면 타입만 다른 비슷한 코드를 여러번 쓸 필요가 없다. struct StringModel { let info: String? func removeInfo() -> StringModel { StringModel(info: nil) } } struct BoolModel { let info: Bool? func removeInfo() -> BoolModel { BoolModel(info: nil) } } 이 코드의 info 프로.. 2023. 6. 21. 4. custom Shape / path 🦁custom Shape / path🦁 SwiftUI에는 기본 shape가 많다. Circle, Rectangle, RoundedRectangle, Capsule 등.. 하지만 삼각형, 다이아몬드 등 다른 형태가 필요하다면, 이걸 코드로 구현하려면 shape를 커스텀 할 수 있다. 만약 기본 Rectangle로 삼각형을 만든다면.. Rectangle() .trim(from: 0, to : 0.5) .frame(width: 100, height: 100) .rotationEffect(Angle.degrees(-45), anchor: .center) 이렇게 자르고 돌려서 만들 수는 있다.. 하지만 아예 커스텀 shape를 만드는 방법이 더 낫다고 생각한다. 좀 더 입맛에 맞게 그릴 수 있기 때문이다. str.. 2023. 6. 20. 3. MatchedGeometryEffect / custom segmented Control 세그먼트컨트롤 🦁MatchedGeometryEffect / custom segmented Control🦁 정말 기똥찬 모디파이어다.. 미리 알았다면 챌린지에서 유용하게 사용했을텐데 ㅜㅜ 뷰 간 애니메이션 전환에 사용하는 modifier로, 두 개 이상의 뷰 사이에서 공통 식별자(identifier)를 기반으로 애니메이션 전환을 해준다. 동일한 식별자를 가진 뷰들 간의 속성이 자연스럽게 전환되는 애니메이션을 구현할 수 있다. 위치 이동 예시 만약 이런 애니메이션을 구현한다면? 방법은 다양하겠지만 가장 단순한 방식은 바로 offset을 조정하는 것이다. struct MatchedGeometryEffectPrac: View { @State private var isTapped: Bool = false var body: so.. 2023. 6. 20. 2. AnyTransition Custom / 트랜지션 커스텀 🦁AnyTransition Custom / 트랜지션 커스텀🦁 뷰 전환을 부드럽게 할 때 사용하는 transition을 커스텀해보자. AnyTransition 애니메이션과 함께 뷰 전환을 처리하고 커스텀 전환 효과를 만들 때 사용됨 기본 제공 전환효과들 for custom View struct AnyTransitionPrac: View { @State private var showRectangle: Bool = false var body: some View { VStack { Spacer() if showRectangle { RoundedRectangle(cornerRadius: 25) .fill(LinearGradient(colors: [Color.blue, Color.green], startPoint:.. 2023. 6. 19. 이전 1 2 3 4 5 ··· 18 다음