일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- tableView
- clean architecture
- HIG
- RxCocoa
- ios
- combine
- swift documentation
- uiscrollview
- MVVM
- 리펙터링
- Clean Code
- Xcode
- swiftUI
- collectionview
- Refactoring
- UITextView
- 애니메이션
- 리펙토링
- UICollectionView
- Protocol
- Human interface guide
- ribs
- uitableview
- map
- rxswift
- SWIFT
- 클린 코드
- Observable
- 리팩토링
- 스위프트
- Today
- Total
목록iOS 기본 (SwiftUI) (54)
김종권의 iOS 앱 개발 알아가기
목차) SwiftUI의 기본 - 목차 링크 Animation SwiftUI에서는 withAnimation을 통하여 쉽게 애니메이션 효과 적용이 가능 버튼을 눌렀을때 widthAnimation()에 애니메이션 타입, duration, 애니메이션 적용할 클로저 블록만 구현하면 완료 애니메이션 적용 방법 애니메이션을 적용하기 전에 필요한 뷰 준비 모두 동일한 width로 시작 GeometryReader를 통해 현재 영역의 width, height값을 사용 struct ContentView : View { private let duration = 3.0 @State var isAnimated = false @State var width1 = 150.0 @State var width2 = 150.0 @State ..
목차) SwiftUI의 기본 - 목차 링크 EmptyView 이름 그대로 아무것도 가지고 있지 않은 뷰 EmptyView()에 frame, foregroundColor 옵션을 주어도 아무런 표시가 남지 않음 struct ContentView: View { var body: some View { VStack { Text("Text1") EmptyView() .frame(height: 20) .foregroundColor(.blue) Text("Text2") Spacer() .frame(height: 20) Text("Text3") } } } EmptyView의 사용처 아무런 뷰를 사용하고 싶지 않을때 선언 Toggle에 label이라는 파라미터에 EmptyView()를 넣어서 label을 사용하지 않는다는..
목차) SwiftUI의 기본 - 목차 링크 Alert iOS 13~iOS 15까지는 위 Alert를 사용했지만, deprecated iOS 15부터는 .alert 사용을 권장 .alert는 더욱 선언적으로 alert를 사용할 수 있는 방법 위 Alert를 하나의 View로 존재했지만, iOS15부터는 메소드로 사용이 가능 (더욱 선언적 프로그래밍) 사용 방법은 Button에 .alert하여 추가 alert가 보이는 상태 변수도 하나 추가 .alert 메소드에는 titleKey, isPresented, View 순서대로 주입하여 사용 @State var isShowing = false var body: some View { Button("Alert") { isShowing = true } .alert("t..
목차) SwiftUI의 기본 - 목차 링크 TabView SwiftUI에서는 Tab을 매우 직관적으로 추가하기가 가능 TabView를 선언해 놓고, 가 하위에 .tabItem을 추가하여 사용 TabView에 넣을 뷰 3가지 준비 struct ViewA: View { var body: some View { Text("ViewA") } } struct ViewB: View { var body: some View { Text("ViewB") } } struct ViewC: View { var body: some View { Text("ViewC") } } TabView하위에 위 뷰들을 추가하고, 탭뷰의 이름은 .tabItem으로 추가 struct ContentView: View { var body: some ..
목차) SwiftUI의 기본 - 목차 링크 Spacer Stack안에서 사용되며, Stack의 크기만큼 내부 크기의 공백이 채우고 싶을때 사용 List와 row가 있을 때 row는 원래 좌측 정렬되어있지만, Spacer()를 추가하면 오른쪽 정렬로 변경 Spacer없는 경우 Spacer 추가한 경우 코드 struct ChecklistRow: View { let name: String var body: some View { HStack { Spacer() //
목차) SwiftUI의 기본 - 목차 링크 Group Group은 여러개의 View 들에 동일한 속성을 부여하고 싶을때 사용 ex) 3개의 Text에 동일한 .font를 적용하고 싶은 경우, 3개의 Text를 Group안에 넣어서 관리 struct ContentView: View { var body: some View { Group { Text("SwiftUI") Text("Combine") Text("Swift System") } .font(.headline) Text("Some Text") } } GroupBox GroupBox는 view 연관있는 내용들을 하나로 묶은 UI GroupBox { Text("Content") } GroupBox("title") { Text("Content") } Grou..
목차) SwiftUI의 기본 - 목차 링크 Axis enum 타입 형태 단순히 horizontal, vertical이라는 case가 있는 형태 @frozen public enum Axis : Int8, CaseIterable { case horizontal case vertical @frozen public struct Set : OptionSet { public typealias Element = Axis.Set public let rawValue: Int8 public init(rawValue: Int8) public static let horizontal: Axis.Set public static let vertical: Axis.Set public typealias ArrayLiteralEleme..
목차) SwiftUI의 기본 - 목차 링크 ForEach collection형태의 데이터들에 접근하는 구조체 collection 형태인 데이터는 반드시 identifiable을 준수하는 구조체 ForEach는 collection을 순회할때 RandomAccess 방식을 사용하므로 효율적인 탐색이 가능 사용 방법 모델에 Identifiable을 준수하도록 구현 배열 collection으로 데이터 준비 private struct NamedFont: Identifiable { let name: String let font: Font var id: String { name } } private let namedFonts: [NamedFont] = [ NamedFont(name: "Large Title", fon..