일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- UICollectionView
- Observable
- combine
- Refactoring
- RxCocoa
- swift documentation
- 스위프트
- 리펙터링
- Xcode
- MVVM
- collectionview
- 리펙토링
- uiscrollview
- 리팩토링
- HIG
- map
- SWIFT
- UITextView
- clean architecture
- Clean Code
- ribs
- ios
- Protocol
- 애니메이션
- tableView
- Human interface guide
- rxswift
- 클린 코드
- swiftUI
- uitableview
- Today
- Total
목록iOS 응용 (SwiftUI) (57)
김종권의 iOS 앱 개발 알아가기
alignement 개념보통 HStack, VStack을 사용하다보면 alignment 값이 있는데 대부분은 default(.center)로 두고 사용하지만 이 값을 잘 사용하면 다양한 뷰 배치를 편리하게 할 수 있는 장점이 존재속성을 알아보기 전에, HStack(alignment:)에서 alignment의 의미를 파악하는것이 가장 중요alignment 의미?HStack은 뷰들을 왼쪽에서 오른쪽으로 채워주는 컨테이너이며, 이미 왼쪽에서 오른쪽이라는 Horizontal 의미를 가지고 있지만, Vertical의 의미는 정해지지 않았으므로 alignment에서 정하는 것HStack에서 alignment는 HStack의 y좌표를 의미alignement의 디폴트 값은 center이므로 아래와 같이 작성하면 콘텐츠..
키보드와 스크롤 뷰스크롤 뷰 안에 있는 TextField를 탭하여 키보드가 등장할 때, 키보드와 TextField 사이의 거리 최소 32만큼 스크롤링 되는 방법?ex) 키보드와 포커싱된 TextField 사이의 거리를 최소 32로 설정한 예제구현 아이디어키보드 높이가 변하는 이벤트를 감지키보드가 등장하면 safeAreaPadding을 32로 설정, 키보드가 다시 들어가면 0으로 설정구현키보드 이벤트 감지키보드 이벤트를 감지하는 ObservableObject 성격의 클래스 구현public class KeyboardInfo: ObservableObject { public static var shared = KeyboardInfo() @Published public var height: CG..
키보드와 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..
컨텐츠 크기만큼 크기 조절 방법ex) 내부 컨텐츠만큼 크기가 조절되지 않는 경우struct ContentView: View { var body: some View { HStack { Text("Test") .font(.largeTitle) RoundedRectangle(cornerRadius: 12) .fill(Color.blue) } }}(왼쪽 Text 높이만큼 오른쪽 파란색 뷰의 세로 길이를 맞추는 방법?)fixedSize(horizontal:vertical:)을 사용하면 콘텐츠 크기만큼 크기 고정이 가능struct ContentView: View { ..
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 ...
플러그인 패턴핵심 기능을 변경하지 않고도 새로운 기능을 추가하거나 확장할 수 있도록 하는 구조적 패턴유연성과 확장성이 높다는 장점플러그인 패턴 구조ex) 계산기 로직을 플러그인 패턴으로 만들기PluginManager가 있고 여기서는 핵심 기능을 담당하며, 이곳에 추가하고 싶은 기능(플러그인)들을 등록하고 실행할 수 있는 관리자 역할let pluginManager = PluginManager()플러그인 인스턴스를 만들어서 플러그인에 등록let additionPlugin = AdditionPlugin()let multiplicationPlugin = MultiplicationPlugin()pluginManager.registerPlugin(additionPlugin)pluginManager.registerP..
토글 버튼 만드는 아이디어토글 버튼을 만드는 방법은 여러가지가 있지만, "토글에 관한 기능"을 생각해보면 여러곳에서 사용될 수 있는 여지가 있으므로 공통화가 필요UIButton에는 selected 상태가 있는데 이 상태는 직접 특정 타이밍에 isSelected 값을 변경해주어서 사용이 가능touchUpInside 시점에 selected 값을 변경해주어서 구현토글 버튼 만들기UIButton을 상속하여 ToggleButton 추가class ToggleButton: UIButton {}touchUpInside 시점에 isSelected 상태를 변경해주는게 필요하므로 addTarget(_:action:for:)를 사용하여 touchUpInside이벤트 처리class ToggleButton: UIButton { ..