일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- combine
- clean architecture
- 리펙터링
- UICollectionView
- 클린 코드
- ios
- 애니메이션
- Human interface guide
- map
- ribs
- 리팩토링
- MVVM
- 리펙토링
- uitableview
- Clean Code
- Xcode
- RxCocoa
- tableView
- Refactoring
- Protocol
- Observable
- swift documentation
- rxswift
- swiftUI
- uiscrollview
- 스위프트
- collectionview
- HIG
- SWIFT
- Today
- Total
목록2022/07 (31)
김종권의 iOS 앱 개발 알아가기
목차) SwiftUI의 기본 - 목차 링크 TextField 값을 입력받을 수 있는 컴포넌트 SwiftUI에서는 @State 상태 프로퍼티 하나를 두고 값이 입력되면 여기에도 입력되도록 구현 struct ContentView: View { @State private var username = "" var body: some View { TextField( "User name", text: $username ) } } @FocusState 텍스트 필드의 포커스 (firstResponder) 관리는 @FocusState를 사용하면 매우 손쉽게 코드에서도 제어가 가능 @FucusState에 사용할 텍스트 필드의 타입을 정의 enum Field { case username case email } email 텍스..
목차) SwiftUI의 기본 - 목차 링크 Text Text()로 사용 struct ContentView: View { var body: some View { Text("text") } } underline, strikethough, baselineOffset struct ContentView: View { var body: some View { VStack { Text("text1") Text("underline") .underline() Text("strikethrough") .strikethrough() Text("base line ofset(30)") .baselineOffset(30) } } } kerning과 tracking kerning은 문자간의 offset을 조절 tracking은 후행 ..
목차) SwiftUI의 기본 - 목차 링크 View Protocol View 프로토콜 프로토콜이고, body라는 computed property를 가지고 있는 타입 view를 입력할 수 있게하는 인터페이스를 제공하는 역할 @available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0, *) public protocol View { associatedtype Body : View @ViewBuilder var body: Self.Body { get } } @ViewBuilder @resultBuilder를 사용하여 정의한 struct 형 @resultBuilder는 swift5.4에서부터 나온 api이며, 개념은 이전 포스팅 글 참고 (@resultBuilder를 사..
Views and Controls View protocol Text, Text ViewModifier TextField TextField ViewModifier, SecureField Font Image SF Symbols Button, ButtonStyle ButtonStyle, PrimaryButtonStyle을 이용한 커스텀 버튼 EditButton, PasteButton Toggle, ToggleStyle을 이용한 커스텀 토글 Picker, PickerStyle DatePicker, ColorPicker Slider Stepper NavigationView, NavigationLink Layout, Presentation HStack, VStack, ZStack, LazySatck List (리프..
App이란? Star라는 앱을 만들면 자동으로 StarApp.swift파일과 ContentView.swift파일이 자동으로 생성 App을 상속받고 있는 StarApp을 확인 import SwiftUI @main struct StarApp: App { var body: some Scene { WindowGroup { ContentView() } } } App이란? 앱의 구조와 동작을 나타내는 타입 App 위에는 @main이라는 어노테이션을 사용하여 앱의 entry point를 명시하여 같이 사용 cf) SwiftUI를 공부하면서 사용할 유용한 단축키 (document 오픈 + 검색): control + cmd + option + / body라는 computed property를 이용하여 앱의 content..
핑퐁 로직 PingPong을 사용하는 케이스는 일반적으로 웹소켓에서 사용 앱에서 서버에게 ping을 보내고, 서버로부터 pong을 받는 로직 만약 서버로부터 pong이 앱에서 설정한 특정 시간안에 안오면 lost connection으로 판단 주의할점 앱에서 서버에서 ping을 보낼때 throttle 적용 (만약 pong이 올때마다 ping을 날리면 짧은순간에 수많은 통신이 이루어짐) 핑퐁 구현 아이디어 ping을 보내는 부분 1) API.requestPing 수행 -> response를 받으면 다시 ping을 보내는 코드를 구현 2) 서버에ping을 보낼땐 항상 timer를 사용하여 시간을 체크하고 타이머가 다 된 경우, completion 처리를 수행 타이머는 Swift에서 제공하는 Timer를 사용하..
다른 글) SwiftUI의 기본 - 목차 링크 TextField placeholder와 값을 입력할 수 있는 컴포넌트 사용할땐 @State 프로퍼티를 하나 두고 이 프로퍼티에 바인딩하여 현재 입력값을 상태에 저장 struct ContentView: View { @State private var username = "" var body: some View { TextField( "User name", text: $username ) } } TextField 활용 키보드 타입 .keyboardType(_:) TextField( "User name", text: $username ) .keyboardType(.numberPad) //
* 프로젝트 파일은 애플 튜토리얼 사이트나 이전 포스팅 글 참고 macOS 실행 시 Sidebar가 들어나지 않는 문제 해결 방법 macOS를 실행하면 Sidebar를 한 번 닫았을 때 다시 열 수 없는 문제가 존재 iOS에서 List형태 안에 NavigationLink로 구현하면 macOS에서는 아래처럼 좌측에는 리스트, 우측에는 NavigationLink에 삽입한 화면이 등장 LandmarkCommands 라는 파일 생성 LandmarkCommands 안에 SidebarCommands()를 선언 import SwiftUI struct LandmarkCommands: Commands { var body: some Commands { SidebarCommands() } } LandmarksApp에 .co..