일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- ribs
- rxswift
- 리팩토링
- ios
- Human interface guide
- UITextView
- Protocol
- collectionview
- Clean Code
- swiftUI
- 리펙터링
- swift documentation
- map
- 클린 코드
- RxCocoa
- MVVM
- Xcode
- HIG
- uitableview
- uiscrollview
- 애니메이션
- Observable
- UICollectionView
- clean architecture
- SWIFT
- 리펙토링
- tableView
- Refactoring
- combine
- 스위프트
- Today
- Total
목록iOS 응용 (SwiftUI) (57)
김종권의 iOS 앱 개발 알아가기
@ViewBuilder 기능 알아보기@ViewBuildervar myView: some View { Text("ex")}@ViewBuilder는 @resultBuilder 기능처럼 return키워드와 콤마를 안쓰고 심플하게 반환할 수 있음*resultBuilder개념은 이전 포스팅 글 참고// resultBuilder를 사용한 경우 - 콤마 존재 x@PersonBuilderfunc getPerson() -> [Person] { Person(name: "jake", age: 20) // return 키워드를 사용하지 않아도 동작 Person(name: "kim", age: 22) Person(name: "paul", age: 32)}하지만 @ViewBuilder를 단순히 @resultBuilde..
뷰 데이터 넘기기parentView -> childView 데이터를 넘겨주는 방법1) @State와 Binding으로 넘겨주기 (양방향 바인딩)2) EnvironmentObject를 사용하여 넘겨주기 (양방향 바인딩)1) @State와 Binding으로 넘겨주기@State 프로퍼리를 부모 뷰에 놓고, 달러 $를 붙여서 자식 뷰에 Binding 형태 프로퍼티를 넘겨주기양방향 바인딩ChildView에서 childText를 변경하면 parentText도 같이 변경되고, parentText가 변경되면 childText도 변경됨struct ContentView: View { @State private var parentText = "parent_text" var body: some View { ..
@State 프로퍼티@State를 붙인 프로퍼티의 값이 변경되면 자동으로 이것을 사용하고 있는 뷰들이 다시 그려는 기능* 뷰들이 다시 그려는 기능: 해당 뷰가 다시 그려질 때 init도 다시 호출되는것을 주의@State var text = ""var body: some View { Text(text)}@State 사용 시 주의사항@State의 용도는 View내부에서 프로퍼티를 변경시킬때만 사용해야함init이나 메소드에서 @State를 변경해도 @State값이 변경되지 않음ex) init에서 text를 초기화해주어도 text값이 변경되지 않음struct ContentView: View { var body: some View { VStack { ChildView(t..
Text에 Lottie 넣기Text에 정적인 이미지를 넣는 방법은 기존 방법이 존재NSTextAttachment를 사용하여 AttributedText를 Text 컴포넌트에 대입하는 방법Text에 바로 이어 붙이는 방법하지만 Lottie와 같은 애니메이션을 Text에 넣는 방법은 알려진 방법이 xText에 Lottie 넣는 아이디어Text와 LottieView를 붙이는 것문자열이 있을때, 이 문자열을 띄어쓰기 단위로 쪼개고 Lottie를 넣고 싶은 위치 혹은 문자열을 정하여 그 옆에 LottieView를 넣는 것구조// Lottie를 마지막에 넣고싶고, 문구가 들어갈 뷰의 width를 200라 할 경우 아이디어VStack { 문자열을 " " 단위로 분해하여 배열로 나누기 라인별로 들어갈 문자열을 나누어..
@ObservedObject 사용 요건ObservableObject 모델을 사용할 때 아래 에러를 마주치는 경우가 존재바로 @ObservedObject를 선언한 프로퍼티는 프로토콜이 아닌 구체적인 타입을 사용해야함struct ContentView: View { // error: Type 'any Personable' cannot conform to 'ObservableObject' @ObservedObject var person: Personable var body: some View { HStack { } }}protocol Personable where Self: ObservableObject { var name: String { get }..
* 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() ..