| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- rxswift
- scrollview
- UICollectionView
- uiscrollview
- uitableview
- 클린 코드
- combine
- HIG
- swift documentation
- 스위프트
- collectionview
- tableView
- Xcode
- Human interface guide
- clean architecture
- ios
- 리팩토링
- Protocol
- Clean Code
- map
- SWIFT
- Refactoring
- ribs
- swiftUI
- MVVM
- UITextView
- 리펙토링
- RxCocoa
- 애니메이션
- Observable
- Today
- Total
목록swiftUI (181)
김종권의 iOS 앱 개발 알아가기
* Swift는 NSTextAttachement를 활용하지만, SwiftUI에서는 더욱 단순하게 처리가 가능문자열에 이미지 넣는 방법SwiftUI에서는 Text라는 UI 컴포넌트가 있는데 단순히 이것을 활용하면 쉽게 이미지 넣기가 가능HStack을 활용한다면 아래처럼 넣을 수 있지만, 문자열이 길어지게 되면 이상하게 적용 struct ContentView: View { var body: some View { VStack { Text("이미지 붙이기 예제") Image(systemName: "globe") Text("입니다") } }}문자열이 긴 경우, 두 줄이 되면 아래처럼 삽입Text("이미지 붙이기 예제 만..
ObservableObjec, @Published, objectWillChanged 개념ObservableObject는 옵저빙 될 수 있는 모델을 의미옵저빙 된다는 의미는 값이 변경되었을때, 이 모델을 옵저빙하고 있는 대상에게 알림을 주는 것변경된다는 기준은 @Publihsed 키워드로 선언된 프로퍼티가 변경되었을때 알림을 줌@Published를 사용하면 objectWillChanged라는 내부 프로퍼티에 send()를 날리는 것과 동일class User: ObservableObject { let name = "name" /// @Published: 변경되었다는 기준이 될 property에 선언 @Published var score = 0 /* objectWil..
StackView sv LazyStackViewStackView, LazyStackView 모두 ScrollView와 같이 사용하여 리스트형 UI 구현이 가능// 1ScrollView(.horizontal) { HStack { ProfileView() ProfileView() ProfileView() ProfileView() ProfileView() }}.frame(maxWidth: 500)// 2ScrollView(.horizontal) { LazyHStack { ProfileView() ProfileView() ProfileView() ProfileView() ..
@State를 사용하면 mutating 없이도 사용이 가능아래처럼 @State를 프로퍼티에 붙여서 사용하면 change()함수에서 mutating 키워드가 없더라도 문제없이 동작struct MyStruct { @State var val = 0 func change() { val = 0 }}struct이기 때문에 값을 변경하려면 원래 mutating키워드가 필요하지만 @State를 사용하면 mutating 없이 사용이 가능struct MyStruct { var a1 = 0 func change() { a1 = 2 // Cannot assign to property: 'self' is immutable }}computed property..
낮은 수준의 성능을 야기하는 요소 4가지1) Function call - 최적화 되지 않은 많은 함수 호출2) Memory allocation - 메모리 할당에 너무 많은 시간을 소비3) Memory layout - 데이터가 표현되는 방식 때문에 많은 시간이나 메모리 낭비4) Value copying - 불필요하게 값을 복사하고 파괴하는데 많은 시간을 소비* 1), 2)번 내용은 이전 포스팅 참고3) Memory layoutmemory layout이란?메모리를 할당한 후 해당 메모리를 사용하여 값을 저장하는 방법메모리 에서의 representaion이라는 개념representation은 메모리 안에서 value를 어떻게 바라보는가를 의미아래 코드에서 array는 메모리 관점에서 "두 개의 double 값..
Widgets and Live Activities기존에 iOS에만 있던 Live Activities 기능이 watchOS에서도 추가됨iOS 기반의 Live Activities가 자동으로 Apple Watch에 표출supplementalActivityFamilies에 small과 medium을 적용하여 watchOS에서 한 번에 더 많은 가사를 표출custom containers - 새로운 ForEach(subviewOf:)ForEach의 새로운 API인 ForEach(subviewOf:)를 사용하면 재귀적으로 하위뷰를 접근하여, 계속 뷰가 위에 쌓이는 UI구현이 가능 * container 관련 UI 구체적인 개념은 WWDC24 Demystify SwiftUI containers 참고Ease of use ..
이번 WWDC 세션의 의미Swift언어가 어떻게 발전하며 앞으로도 어떤 패러다임을 가지고 발전할 것인가를 이해할 수 있는 세션2024년 Swift의 핵심 패러다임: 다른 플랫폼과의 상호운용성Swift 언어의 진화2014년에 Swift1.0부터 2024년에 Swift6.0이 나오는데, 2023년까지는 전반적으로 다른 언어와 어울릴 수 있는 기반을 다루도록 진화특히 2023년에는 C++과의 상호 운용성을 도입SwiftData와 같이 차세대 API를 활성화하는 매크로도 도입애플의 Swift팀 구성2024년에 새로 생긴팀: Plaform, Ecosystem, Embeddedplatform: Swift를 더 많은 곳으로 가져오는데 집중하기 위한 플랫폼 운영팀Ecosystem: 개발자 경험과 새로운 생태계 그룹을 ..
* SwiftUI Sample 앱 살펴보기 전체 목차는 여기 참고TabView 개념SwiftUI에서의 TabView는 선언적으로 매우 직관적으로 사용이 가능Text 밑에 TabView를 표현하고 싶은 경우?아래 코드에 TabView 블록을 추가struct ContentView: View { var body: some View { Text("Hello, world!") .padding() }}(TabView 추가)struct ContentView: View { var body: some View { Text("Hello, world!") .padding() TabView { // 이제 화면 A, B, C 뷰를 넣고 싶은 경우, 차례로 연달아서 넣기struct Cont..