
SwiftUI로 View를 구성하다보면 ForEach를 사용하게 될 때가 많더라구요 그래서 한번 정리하고 갈까 합니다 식별된 데이터의 컬렉션에서의 요청에 따라 뷰를 계산하는 구조체라고 합니다 어후 기네요 세개의 파라미터를 받는다고 합니다 1. Data 2. ID 3. Content Data는 RandomAccessCollection이여야 하고 ID는 Hashable 해야 한대용 음 어려운데 View를 구성할때 ForEach안쓰고 그냥 for-in 쓰면 안되나요? 넵 "ViewBuilder'에는 제어 흐문이 포함된 클로저를 사용할 수 없습니다." 경고를 띄워줍니다 ForEach는 일반 for문과 다르게 ForEach가 View Container의 역할을 하고 View를 계산해 보여줍니다. ForEach의 ..

이전에 UIKit으로 개발된 앱에 SwiftUI View를 추가해야거나 SwiftUI에 아직 없는 기능들을 사용하기 위해 SwiftUI로 개발된 앱에 UIKit View를 추가해야 하는 경우가 있습니다 그럴 때를 위해 ! UIKit -> SwiftUI SwiftUI 인터페이스에서 UIView 오브젝트를 생성하고 관리할 수 있도록 해주는 프로토콜입니다 이 프로토콜을 채택하기 위해서는 두가지 함수를 구현해줘야 합니다. struct SomeSwiftUIView: UIViewRepresentable { func makeUIView(context: Context) -> UIViewType { // View를 생성 let view = UIView() return view } func updateUIView(_ vi..

로그인 뷰를 만드는데 버튼이 여러개다 보니까 중복되는 부분이 많아지더라구용 좀 짧고 깔끔하게 쓰고싶어서 LabelStyle을 찾아보았습니다 정의부터 보시죠 View안의 모든 label에 custom appearance를 적용하는 타입 ButtonStyle같이 LabelStyle을 정의하는 것입니다. resizable(), .frame(), scaledToFit() 같이 동일한 modifier를 사용해야하는 Label이 많으면 LabelStyle을 한번 딱 정의하고 적용시켜주면 가독성도 좋고 편해지겠죠? LabelStyle 프로토콜을 채택하려면 makeBody함수를 만들어줘야합니다 이렇게 만들어주고 이런식으로 사용해주면 깔끔하게 코드를 작성할 수 있습니다!

대부분의 앱이 요런 탭을 가지고있죠 SwiftUI에서 탭을 만들어주는 TabView에 대해 살펴봅시다 대화형 유저 인터페이스 요소를 사용하여 여러 하위 View 사이를 전환하는 View 쉽게말해 위의 스크린샷같은 탭을 가지는 View입니다. 선언을 보면 SwiftUI에서 제공되는 View이기에 struct 타입이고 View프로토콜을 채택합니다 TabView { ReceivedView() .badge(2) .tabItem { Label("Received", systemImage: "tray.and.arrow.down.fill") } SentView() .tabItem { Label("Sent", systemImage: "tray.and.arrow.up.fill") } AccountView() .badge(..

UIViewRepresentable이란? SwiftUI 뷰 계층에 UIKit view를 통합하기 위한 wrapper이다. FSCalendar를 쓰고싶은데 UIKit버젼밖에 없더라구요 그래서 SwiftUI에서 UIKit View를 사용하고싶어 찾아봤습니다. UIViewRepresentable을 사용하면 해결할 수 있다~ 우선 UIViewRepresentable 인스터스를 만들면 UIView 객체를 SwiftUI 인터페이스에서 쓸 수 있습니다. 생성과 업데이트는 SwiftUI 뷰들과 병렬적으로 이루어지며 앱의 현재 상태 정보를 제어할 수 있습니다. 시스템은 자동적으로 다른 뷰와의 상호작용을 허용하지 않으므로 가능하게 하려면 Coordinator 인스턴스를 제공해야합니다. UIViewRepresentable ..

Closure에서 View를 구성하는 custom parameter attribute -> Closure에서 View를 구성한다! 1. @ViewBuilder - Parameter 우리가 View를 구성할 때 HStack, VStack, ZStack를 자주 씁니다. HStack의 생성자는 이렇게 생겼습니다. @inlinable public init(alignment: VerticalAlignment = .center, spacing: CGFloat? = nil, @ViewBuilder content: () -> Content) 보면 마지막 파라미터에 @ViewBuilder가 달려있습니다. 이렇게 @ViewBuilder를 사용해서 View를 custom해서 Child View를 만들어 줄 수 있는것! im..

ViewModifier ViewModifier는 프로토콜이고, 뷰 또는 다른 view modifier에 적용시켜 원래 value와 다른 버전을 만들 수 있다. 이걸 왜 쓰냐? → view에 적용할 수 있는 재사용 가능한 modifier를 만들고 싶을땐 ViewModifier 프로토콜을 채택해서 만들면 된다! View가 body를 요구하는 것처럼 ViewModifier는 body 메소드를 요구하므로 채택하기 위해서는 body 메소드를 정의해줘야 합니다. 이 코드는 새 modifier를 생성하기 위해 ViewModifier를 채택해 여러 modifier를 결합하는 코드입니다. struct BorderedCaption: ViewModifier { func body(content: Content) -> some..

Protocol 표준 interaction behavior을 적용하고 view 계층 안에 있는 모든 버튼의 모양을 custom 하는 타입 즉 이 프로토콜을 이용하면 커스텀 버튼 스타일을 만들 수 있다! 현재 view 계층의 view style을 설정하기위해 buttonStyle(_:) modifier를 사용하고 표준 버튼 interaction behavior를 사용하는 button을 만들때 ButtonStyle Protocol에 준수하는 스타일을 특정하면 된다. 즉 custon interaction behavior을 하는 button을 만들때는 PrimitiveButtonStyle을 사용하면 됨. buttonStyle은 반환형이 someView이고 인자는 ButtonStyle이나 PrimitiveButt..
- Total
- Today
- Yesterday
- swift
- ios
- 3000
- 알고리즘
- C++
- 문자열 교집합
- 도둑질
- UIKit
- Algorithm
- programmers
- Xcode
- 마법사 상어와 파이어스톰
- 8898
- 입국심사
- 백준 20058
- 코딩테스트
- 3차원 농부
- swea
- 단속카메라
- programmres
- 코테
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |