일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- uitableview
- uiscrollview
- UICollectionView
- tableView
- Clean Code
- ios
- swiftUI
- SWIFT
- Xcode
- map
- Refactoring
- MVVM
- 리팩토링
- 애니메이션
- HIG
- Observable
- 리펙터링
- 스위프트
- rxswift
- RxCocoa
- 리펙토링
- swift documentation
- collectionview
- clean architecture
- 클린 코드
- combine
- Human interface guide
- ribs
- UITextView
- Protocol
- Today
- Total
목록iOS 튜토리얼 (SwiftUI) (21)
김종권의 iOS 앱 개발 알아가기
SwiftUI에서 UIkit 사용 방법 - UIView UIViewRepresentable 프로토콜을 구현하면 SwiftUI에서 UIView 사용 가능 @available(iOS 13.0, tvOS 13.0, *) @available(macOS, unavailable) @available(watchOS, unavailable) public protocol UIViewRepresentable : View where Self.Body == Never { associatedtype UIViewType : UIView func makeUIView(context: Self.Context) -> Self.UIViewType func updateUIView(_ uiView: Self.UIViewType, contex..
EnvironmentValues superview에서 darkmode로 설정하면 subviews들도 모두 darkmode로 변할 수 있는 기능을 EnvironmentValues로 제어가 가능 Swift에서는 개별 클래스로 관리하였지만, SwiftUI에서는 모두 Environment를 통해서 모두 접근이 가능 가장 대표적인 값은, 지금 지역을 알 수 있는 locale과 layoutDirection, undoManager 등 접근 가능 ex) superview에서 `colorScheme`값을 dark로 지정하면 subview들은 자동으로 dark mode로 변경 EnvironmentValues 종류 editMode colorScheme timeZone locale calendar layoutDirection..
toolbar TabBar와의 차이점 TabBar: 현재 컨텍스트와 연관되지 않은 화면이동 ToolBar: 현재 컨텍스트와 관련된 항목 추가, 삭제, 주석 추가, 사진 촬영과 같은 일 * toolbar의 Human Interface guide 관련 구체적인 내용은 이전 포스팅 글 참고 toolbar를 사용하기 위해 네비게이션 뷰로 이루어진 뷰 준비 import SwiftUI struct ContentView: View { var body: some View { NavigationView { VStack { Text("Toolbar 예제") .padding() } .navigationTitle("타이틀") } } } toolbar를 추가할땐 navigationTitle을 추가하듯이 바로 밑에다 .toolb..
@State View를 상속받는 뷰에서, 값을 변경할때 사용하는 프로퍼티 어노테이션 @State var n = 0 내부 구현부는 propertyWrapper를 사용한 형태 ex) @State를 붙이지 않은 경우 컴파일 에러 발생 struct ContentView: View { var n = 0 var body: some View { VStack { Text("\(n)") Button("Tap!!") { n += 1 // Error: Left side of mutating operator isn't mutable: 'self' is immutable } } } } ex) @State를 프로퍼티 앞에 붙일 경우 컴파일 에러 해결 struct ContentView: View { @State var n = 0 //
* 전체 소스 코드는 튜토리얼에 있는 프로젝트 참고 TabView TabView와 .tabItem 속성을 이용하여 구현 먼저 Tab의 케이스를 정의하고, 이 케이스를 상태로 갖고있는 프로퍼티도 선언 import SwiftUI struct ExampleView: View { @State private var selection = Tab.home enum Tab { case home case setting } } body를 선언하여 내부에서 TabView(selection:)으로 selection 상태를 정의하고 클로저 내부에서 TabView안에 들어갈 뷰들을 구현 var body: some View { TabView(selection: $selection) { // 여기서 뷰 구현 } } 첫 번째 뷰 - ..
GeometryReader ContainerView이며, 내부에 UIView들의 layout을 쉽게 변경할 수 있는 역할 * GeometryReader를 안쓴 경우) Stack안에 두가지의 뷰가 들어가고, Rectangle이 하단의 모든 자리를 차지하는 형태 struct Example: View { var body: some View { VStack { Text("example GeoMetryReader") Rectangle() .foregroundColor(.green) } } } struct Example_Previews: PreviewProvider { static var previews: some View { Example() } } GeometryReader를 사용한 경우) GeometryRe..
애니메이션에 사용할 모양 정의 SwiftUI에는 대표적으로 4가지의 모양을 쉽게 사용이 가능 Capsule() Circle() Rectangle() RoundedRectangle(cornerSize:) var body: some View { Capsule() .fill(color) .frame(height: 70) Circle() .fill(.red) .frame(width: 100, height: 100) Rectangle() .fill(.green) .frame(width: 100, height: 100) RoundedRectangle(cornerSize: .init(width: 12, height: 12)) .fill(.blue) .frame(width: 100, height: 100) } 이 중에..