일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- UITextView
- 클린 코드
- Clean Code
- Protocol
- 리펙터링
- collectionview
- clean architecture
- RxCocoa
- combine
- ribs
- uitableview
- map
- 스위프트
- swiftUI
- Observable
- HIG
- 리펙토링
- ios
- swift documentation
- Human interface guide
- MVVM
- Refactoring
- tableView
- rxswift
- Xcode
- SWIFT
- 리팩토링
- UICollectionView
- uiscrollview
- 애니메이션
- Today
- Total
목록swiftUI (158)
김종권의 iOS 앱 개발 알아가기
키보드와 safeAreaSwiftUI를 사용하면 키보드가 등장할 때 safeArea의 영역이 변경됨키보드가 올라올 때 별다른 처리가 없어도 키보드가 올라올 때 safeArea가 동적으로 키보드 위로 변하면서 같이 올라가는 것 전체 코드) struct ContentView: View { @State private var text = "" var body: some View { VStack { Spacer() Text("safeArea 예제") .padding() TextField("여기에 텍스트를 입력하세요", text: $text) .textFiel..
gesture 동작 개념gesture는 거의다 아는 것이지만, 특성이 존재gesture가 즉각 이벤트가 감지되지 않고 일정 시간 0.3초 정도의 딜레이를 두고 그동안 입력된 이벤트를 총괄하여 어떤 제스처인지 파악만약 2번 탭 제스쳐와, 1번 탭 제스쳐가 같이 등록되어 있다면 ex) 2번 탭 제스쳐와, 1번 탭 제스쳐가 같이 등록된 케이스gesture는 일정 딜레이를 두고 감지되므로, 2번 탭했을 때 첫번째 탭에 바로 1중 탭 제스쳐가 감지되지 않고 2중 탭 제스쳐가 감지됨빠르게 2번 탭하면 2중 탭 이벤트만 감지되고, 1번만 탭하면 1중 탭 이벤트만 감지.gesture(TapGesture(count: 2).onEnded { message = "Tap twice!" boxColor = .oran..
1. Canvas 개념 (그림 그리기, Path)2. Canvas 사용 방법 (fill, stroke) 이전 글에서 알아본 대로 (아래처럼 Canvas를 선언하여 사용 준비)struct ContentView: View { var body: some View { Canvas( opaque: true, colorMode: .linear, rendersAsynchronously: false ) { context, size in context.opacity = 0.3 ... } .frame(width: 300, height: 500) }}fill을 사용..
1. Canvas 개념 (그림 그리기, Path)2. Canvas 사용 방법 (fill, stroke)Canvas 개념SwiftUI에서 2D 그래픽을 그리기 위해 사용되는 뷰View타입이므로 아래처럼 선언하여 사용이 가능인수로 주어지는 context와 size를 사용하여 그림을 그리는 것struct ContentView: View { var body: some View { Canvas( opaque: true, colorMode: .linear, rendersAsynchronously: false ) { context, size in context.opacity = 0.3 ...
명령형 vs 선언형 코드 작성의 흐름명령형 프로그래밍"어떻게" UI를 업데이트할지 명시적으로 작성let label = UILabel()label.text = "Hello, World!"label.textColor = .bluelabel.frame = CGRect(x: 0, y: 0, width: 200, height: 50)view.addSubview(label) 선언형 프로그래밍좀 더 코드가 뷰의 형태와 닮은 형태로 작성struct ContentView: View { var body: some View { Text("Hello, World!") .foregroundColor(.blue) .frame(width: 200, height: 50) ..
LayoutPriority 개념layoutPriority값이 크면, 뷰가 다른 뷰보다 커질 수 있는 힘이 큼기존 swift에서 ContentHuggingPriority, ContentCompressionResistancePriority 두 개를 두어서 헷갈렸던 것을 SwiftUI에서는 layoutPriority하나로 표현HStack에 두 개 의 텍스트가 있을 때 예시참고) 일반적으로는 HStack이 있을때 두 개의 뷰에는 동일한 width로 할당되지만 띄어쓰기가 있으면 내부적인 개행 처리 때문에 아래처럼 균등하지는 않게끔 배치됨struct ContentView: View { var body: some View { HStack { Text("This is a moder..
뷰 속성 순서의 중요성SwiftUI에서는 뷰를 선언하고 속성을 선언적으로 넣어주어서 뷰를 완성해나가는데, 속성을 넣을때 순서도 중요ex) 아래 firstView, secondView는 frame(minHeight:)의 선언 순서만 다르고 나머지는 동일한 코드지만 완전히 다른 뷰가 보여짐@ViewBuilderprivate var firstView: some View { VStack(spacing: 0) { Color.clear .frame(width: 287, height: 0) Text("테스트 문구") } .frame(minHeight: 105) // frame(minHeight:) 순서 위치만 다른데, 아래처럼 두 뷰를 VSt..
투명 뷰로 감싸고 터치 이벤트 받는 방법투명 뷰로 감싸는 경우?뷰를 구성하고 특정 영역을 터치 이벤트 영역으로 잡고 싶거나, 접근성을 위해서 특정 뷰로 덮어서 그 부분만 특정 접근성을 주고 싶을때, 가장 단순한 방법은 투명 뷰로 감싸서 처리SwiftUI에서는 투명 뷰로 감싸기 위해서 아래처럼 사용이 가능감쌀 뷰에 overlay를 선언하고 그 위에 Color.clear를 선언하고 여기에 접근성과 tapGesture를 주어서 간편하게 뷰를 감싸는 방법이 존재struct ContentView: View { var body: some View { VStack { Image(systemName: "globe") .imageScale(.large) ..