일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Human interface guide
- MVVM
- rxswift
- Clean Code
- 리펙터링
- 리팩토링
- collectionview
- Refactoring
- SWIFT
- ribs
- 리펙토링
- 클린 코드
- RxCocoa
- map
- tableView
- 스위프트
- Xcode
- combine
- ios
- clean architecture
- Observable
- 애니메이션
- swift documentation
- swiftUI
- UICollectionView
- HIG
- Protocol
- uiscrollview
- UITextView
- uitableview
- Today
- Total
목록2022/10 (31)
김종권의 iOS 앱 개발 알아가기
목차) SwiftUI의 기본 - 목차 링크 DynamicProperty 란? DynamicProperty는 update()라는 메소드가 있고, 내부적으로 이 메소드가 불리며 뷰를 업데이트 시키는데 사용되는 protocol DynamicProperty 코드 update() 메소드가 있는 형태 @available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0, *) public protocol DynamicProperty { mutating func update() } 주로 propertyWrapper와 같이 사용되며, 특정 값이 변경될때 뷰를 update() 시키게끔 구현 ex) Counter라는 property wrapper를 만들고 사용하는쪽에서 이 값을 변경하면 뷰..
목차) SwiftUI의 기본 - 목차 링크 FetchRequest 란? SwiftUI에서는 Core Data 가져오기 요청 작업을 위한 전용 property wrapper를 지원하고 이것이 FetchRequest FetchRequest는 SwiftUI 뷰에 별도 로직 없이 직접 추가가 가능 @FetchRequest 사용 시 데이터 id와 정렬에 사용되는 값을 선언하여 사용 @FetchRequest( entity: Quake.entity(), sortDescriptors: [SortDescriptor(\.time, order: .reverse)] ) private var quakes: FetchedResults 이 밖에도 predicate에는 NSPredicate(format:_:)를 추가하여 쿼리 조건을..
목차) SwiftUI의 기본 - 목차 링크 @EnvironmentObject 란? parent 뷰에서 정의한 observable 객체이며, subview들이 접근 가능한 프로퍼티로 property wrapper 타입 즉, parent 뷰에서 subview에 특정 상태를 주입하여, subview에서 그 상태에 접근할때 사용 subview에서 superview로부터 주입받은 @EnvironmentObject 프로퍼티를 변경시키면 부모에서도 모두 뷰가 업데이트 전역적으로 데이터를 공유하는 형태이므로, 뷰 간 데이터를 공유할때 사용 내부 코드 dynamicMember keyPath로 해당 프로퍼티에 접근할때 dot(.)로 접근이 가능 ObservableObject 타입을 준수할때 사용이 가능 @available..
목차) SwiftUI의 기본 - 목차 링크 * @Published, @objecervableObject 개념은 Combine이므로, Combine 관련 이전 포스팅 글 참고 @ObservedObejct 란? observable 객체를 구독하는 property wrapper observable 객체가 변경되면 뷰에 업데이트 시켜주는 기능 내부 코드 @available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0, *) @propertyWrapper @frozen public struct ObservedObject : DynamicProperty where ObjectType : ObservableObject { @dynamicMemberLookup @frozen pub..
목차) SwiftUI의 기본 - 목차 링크 State 란? SwiftUI에 의해 관리되는 property wrapper 타입 struct ContentView: View { @State var age = 20 // Value, set: @escaping (Value, Transaction) -> Void) public static func constant(_ value: Value) -> Binding public var wrappedValue: Value { get nonmutating set } public var projectedValue: Binding { get } public init(projectedValue: Binding) public subscript(dynamicMember keyPa..
목차) SwiftUI의 기본 - 목차 링크 * cf) UIKit에서 SwiftUI 사용 방법은 이전 포스팅 글 (UIHostingController) 참고 SwiftUI에서 UIKit 사용 방법 UIView 관련 사용 - UIViewRepresentable UIViewController 관련 사용 - UIViewControllerRepresentable UIViewRepresentable 사용 방법 SwiftUI에서 UIKit에 있는 뷰를 사용할때 이용 makeUIView에 UIKit 인스턴스를 리턴 updateUIView은 SwiftUI에서 뷰가 업데이트 될때 불리는 메소드로, 이곳에서 delegate와 같은 처리 public protocol UIViewRepresentable : View where ..
목차) SwiftUI의 기본 - 목차 링크 cf) SwiftUI에서 UIKit 사용 방법은 이전 포스팅 글 (UIViewRepresentable) 참고 UIHostingController 란? UIKit에서 SwiftUI 뷰를 사용하고 싶을때 사용 UIHostingController 코드를 보면 UIViewController를 상속받고 있는 형태 동시에 SwiftUI의 View형태를 준수 UIKit에서 SwiftUI 사용 원리 SwiftUI 뷰를 생성 HostingController를 만들고, 이곳의 제네릭스 타입에 위에서 생성한 뷰로 지정 (SwiftUI를 UIKit에서 접근 할 수 있도록 wrapping하는 작업) UIKit에서 HostingController를 불러와서 사용 open class UI..
목차) SwiftUI의 기본 - 목차 링크 coordinateSpace(name:) 란? “특정 뷰의 좌표 공간”에 이름을 할당하여, 다른쪽에서 points와 size같은 값을 적용시킬때 이 이름으로 접근 할 수 있게하는 하나의 namespace 역할 메소드 시그니쳐 View의 Extension하여 메소드가 정의되므로, 어떤 뷰에서든 사용이 가능 이름을 입력하면 View를 리턴 extension View { @inlinable public func coordinateSpace(name: T) -> some View where T : Hashable } coordinateSpace(name:) 사용 방법 애플 예제) VStack안에 overlay로 circle을 두고, 이 circle을 움직임이 VStac..