일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- MVVM
- swift documentation
- combine
- collectionview
- UICollectionView
- Human interface guide
- uiscrollview
- uitableview
- 스위프트
- 리펙토링
- tableView
- map
- SWIFT
- Clean Code
- 리팩토링
- Refactoring
- clean architecture
- 애니메이션
- rxswift
- Xcode
- Protocol
- UITextView
- swiftUI
- Observable
- 클린 코드
- 리펙터링
- RxCocoa
- ribs
- HIG
- ios
- Today
- Total
목록swiftUI (116)
김종권의 iOS 앱 개발 알아가기
@State, @Bindable 이란?@State 개념양방향 바인딩 (프로퍼티 뷰)@State는 Property wrapper로 구현되었으며 뷰의 상태를 표시해줄 목적으로 있는 키워드이 키워드로 프로퍼티를 선언하고 이 키워드를 뷰에 입력해주면, 이 프로퍼티가 변경되면 자동으로 뷰도 변경됨ex) string이라는 프로퍼티를 @State로 선언하고, 이 프로퍼티를 Text(string)으로 Text 뷰에 넣어준 후, string 프로퍼티 값을 변경해주면 자동으로 Text뷰에 반영됨import SwiftUIstruct ContentView: View { @State var string = "..." var body: some View { VStac..
1. List 형태 UI - @State를 활용하여 로딩 상태, 로드 상태, 실패 상태 띄우기2. List 형태 UI - pull to refresh, 페이지네이션 구현 방법 (List, refreshable, pagination, @Sendable)3. List 형태 UI - 검색된 결과 UI에 보여지게 하는 방법 (검색창, searchable)1, 2번 글 복습)SwiftUI에서는 @State 프로퍼티를 사용하면 손쉽게 상태 변경이 가능단순히 @State 프로퍼티만 변경해도 알아서 바인딩되어 뷰도 변경pull to refresh는 List의 메소드인 refreshable를 사용하면 되고, pagination은 onAppear을 통해서 쉽게 구현이 가능전체 코드: https://github.com/JK..
1. List 형태 UI - @State를 활용하여 로딩 상태, 로드 상태, 실패 상태 띄우기 2. List 형태 UI - pull to refresh, 페이지네이션 구현 방법 (List, refreshable, pagination, @Sendable) 3. List 형태 UI - 검색된 결과 UI에 보여지게 하는 방법 (searchable) 상태 처리 핵심 개념 - @State List형태의 UI를 구현하면 항상 로딩, 성공, 실패에 따라 UI를 다르게 보여주어야 하는데 이 때 SwiftUI의 @State를 활용하면 매우 쉽고 빠르게 구현이 가능 enum으로 로딩, 성공, 실패에 관한 정의를 하고 이 enum 타입의 프로퍼티를 @State로 선언하면 쉽게 상태 관리가 가능 목표) @State로 3가지 ..
1. Swift Charts 사용 방법 (#주식 차트, 주가) - BarMark 2. Swift Charts 사용 방법 (#주식 차트, 주가) - LineMark, RuleMark Swift Chart 개념 (이전에 알아본 개념) iOS 16+에서 사용가능 SwiftUI에서 제공하는 Chart를 사용하면 매우 쉽게 차트 그리기가 가능 LineMark 사용 LineMark: 그래프에서 (x, y)좌표들을 연결해 놓은 주식 차트 같은곳에서 사용 예제에 사용할 Date 구조체 정의 struct Data { let name: String = "jake" let date: Date let value: Int } let datas = [ Data(date: .now, value: 10), Data(date: .no..
SwiftUI의 Binding 바인딩이란 A가 변경될 때 같이 B도 변경해주어야하는 경우, A와 B를 바인딩 해놓으면 A가 변경되었을때 B는 자동으로 변경되게끔 하는 기법을 의미 SwiftUI에서의 바인딩은 property wrapper 형태로 존재 구체적인 @Binding 개념은 이전 포스팅 글 참고 Binding 인터페이스 @available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0, *) @frozen @propertyWrapper @dynamicMemberLookup public struct Binding { public var transaction: Transaction public init(get: @escaping () -> Value, set: @e..
1. Live Activity (ActivityKit, Dynamic Island, 잠금 화면) - 개념 2. Live Activity (ActivityKit, Dynamic Island, 잠금 화면) - UI 구현 방법 3. Live Activity (ActivityKit, Dynamic Island, 잠금 화면) - UIKit에서 다이나믹 아일랜드 적용 방법 예제를 위한 UIKit 프로젝트 생성 Interface > SwiftUI가 아닌 Storyboard 선택 info.plist에서 Live Activity 활성화 Xcode에서 target 선택 Widget Extension 추가 생성된 것 중 필요한 두 가지 파일 확인 JakeBundle: body가 있으며 여러 위젯을 노출할때 사용되는 컨테이너..
목차) Combine - 목차 링크 Catch(_:) 에러가 발생할때 해당 에러에 대한 catch에 걸리면 catch에서 리턴한 데이터만 방출하고 위에있던 남은 데이터는 무시 struct MyError: Error {} let _ = [1,2,-3,4,5].publisher .tryMap { guard $0 > 0 else { throw MyError() } return $0 } .catch { error in [9,8,7].publisher } .sink( receiveCompletion: { print("Completion: \($0)") }, receiveValue: { print("Value:", $0) } ) // Value: 1 // Value: 2 // Value: 9 // Value: 8 ..
1. Live Activity (ActivityKit, Dynamic Island, 잠금 화면) - 개념 2. Live Activity (ActivityKit, Dynamic Island, 잠금 화면) - UI 구현 방법 3. Live Activity (ActivityKit, Dynamic Island, 잠금 화면) - UIKit에서 다이나믹 아일랜드 적용 방법 * Live Activity 기본적인 세팅 방법은 이전 포스팅 글인, 1번 글 참고 Dynamic Island의 UI 구현 방법 1번글에서 자동으로 생성된DynamicIslandWidgetLiveActivity코드 import ActivityKit import WidgetKit import SwiftUI struct DynamicIslandWid..