(이미지출처 : https://unsplash.com/photos/l0j2SGtHe4w?utm_source=unsplash&utm_medium=referral&utm_content=creditShareLink)!선언형을 상징...요즘 가장 큰 관심사가 RxSw
SwiftUI를 공부하다보면 제일 많이 보는 프로퍼티가 하나 있습니다 "body" 입니다. 이것에 대해서 짧은 글을 작성해볼까 합니다.코드만 보면 body는 연산프로퍼티처럼 생겼습니다.그러면 get과 return은 어디에 있는 것일까요? set은 어디서할까요? 프로퍼티
이번에는 SwiftUI를 통해서 "BottomSheet" UI를 만들어보겠습니다.<완성화면>Simulator Screen Recording - iPhone 13 Pro - 2022-02-06 at 14 59 24 BottomSheet를 구현하기 위해서 먼저 구상해
참고) 공식문서에 대한 번역에 가까움.공식문서 상에 다음과 같이 적혀있습니다.\-> 프로퍼티 를 감싸는 것인데 (that절, 값을 읽을 수 있는데 그 값은 View의 환경(설정이라고 오역하는게 받아들이기 쉬울 수 있습니다.))정리하면, 뷰의 설정해야하는 값들이 있는데,
참고) https://developer.apple.com/design/human-interface-guidelines/ios/app-architecture/modality/Modality 에 대한 애플의 설명Modality is a design techniqu
먼저, Assets.xcassets 에 이미지를 추가합니다."Assets.xcassets" 파일은 프로젝트 내 이미지를 추가할 수 있는 폴더 입니다. 이미지를 추가하다보면, 해상도가 화면을 초과하는 경우가 발생할 수 있겠죠?그 때는 Image("이미지이름") 에 .r
모야 : 제가 SwiftUI를 처음 공부하는데요, 막 앞에 @이런게 붙어서 @State, @Binding 그리고 @Environment 이 있어요. 이게 뭔가요? UIKit 공부할 땐, 이런거 본적이 없는데... ㅠㅠ우노 : 네 SwiftUI를 사용하게 되면, 숨쉬듯이
모야 : @State랑 @Binding이랑 뭔가 있다고 했었는데? 맞죠?우노 : 네, 맞아요. 퉁쳐서 이해하시면, 그냥 하나의 짝이다. 라고 생각하세요.ㅎㅎ리마인드 차원에서 복습해볼게요.@State (Swift 5.1 부터 추가된 Property Wrapper)@Sta
SwiftUI로 프로젝트를 구성하던 도중에 통신관련해서는 LazyVStack 을 활용하는게 효과적이라는 강사의 말을 들었습니다. 그러면서 함께 알려준 키워드로는 ReUsable 이였습니다. 그래서 UIKit과 어떠한 면에서 공통점을 가지고 있고 어떤점에서 차이점을 가지
SwiftUI를 공부하다보면, ForEach를 통해서 UIKit에서 구현하던 UICollectionView나 UITableView를 구현하게 됩니다.UIKit에서도 ForEach를 사용하긴 했었지만, 그 당시에는 단순히 For문의 축약형 정도로만 사용했던 것 같습니다.
SwiftUI의 핵심요소인 “@State”과 “@Binding”에 대해서 작성하려고 합니다. 스유를 공부하다보니, 각 View 간의 데이터 전달을 위 두 개의 개념을 통해서 하더라구요. 공부하고 보니 정말 짧은 코드로 편리하게 사용할 수 있는 것 같아서 이번 기회에 정
애플에서의 정의입니다.Observable object를 인스턴스화 하는 프로퍼티 래퍼 타입을 의미합니다.여기서 말하는 “Observable Object” 란, Observable Object 를 준수하는 객체를 의미합니다. 예를들면 아래 코드처럼요.그러면 “Observ
저번에 SwiftUI의 View 프로토콜을 따르는 구조체에서 body는 1 개의 객체만 리턴한다고 배웠습니다.그러면 아래 코드는 어떤 일이길래 여러개의 뷰를 리턴할 수 있는 걸까요?코드에는 Text가 분명히 두 개가 있고 그 상위에 VStack 이 하나가 있습니다.단
WWDC 20에서 소개된 SwiftUI 자료 중, 다음과 같은 단어가 상당히 자주 보입니다.스크린샷 2022-02-09 12 22 28(이 그림은 WWDC20, Introduction SwiftUI에서 나온 사진 일부입니다.)데이터의 관계를 보면 Source of T
SwiftUI에서 @State의 파생데이터로 상태에 따른 UI Redrawing을 알아서 해주는 "Binding" 에 대해서 예제를 통해서 알아보려고 합니다. Binding은 다음과 같은 관계를 가지고 있습니다. @State - @Binding = 원천데이터 : 파생
이번에 만들어볼 프로젝트입니다.02_11_gif @State를 통해서 특정 Cell을 클릭하게되면, Re-Rendering을 수행하고, 이것에 맞게, 팝업창을 나타나게 할 예정입니다. 그리고, 팝업창에서 입력한 데이터가, 원천데이터인 @State를 변경할 수 있도록 @
오늘은 SwiftUI 에서 ViewModel을 구성할 때, 자주 사용되는 "ObservableObject" 를 예제를 통해서 알아보겠습니다. 먼저 아래와 같은 앱이 있다고 하겠습니다. 특별한 기능은 없고, 성과 이름을 입력받으면 입력된 정보 하단에 값이 표시됩니다.
오늘은 @ObservedObject 에 대해서 정리하겠습니다.오늘 작성내용을 그림으료 요약하면 다음과 같습니다.imageObservableObject로 선언된 클래스 데이터를 최상위 뷰에 인스턴스를 생성한다. 그 때, @StateObject를 붙여준다.해당 데이터를
오늘은 SwiftUI에서 UserDefault인 @AppeStorage에 대해서 알아보겠습니다. 우리가 SwiftUI로 앱을 구성하다보면, 앱 프로젝트 전체범위에서 접근 가능한 데이터가 필요할 때가 있죠. 예를들면, 다음과 같은 것들 입니다. 물론 다른 해결방법으로도
오늘은 EnvironmentObject에 대해서 알아보겠습니다.이전에 AppStorage에 대해서 정리했었죠. 그리고 글은 작성하지 않았지만, 데이터의 범위만 줄어든 SceneStorage라는 것도 있습니다. 그리고 이번에는 EvironmentObject입니다. 셋
오늘은 SwiftUI에서 사용될 아키텍처에 대해서 알아보겠습니다. 아키텍처를 고민하고, 적용하는 이유는 다음과 같다고 생각합니다.코드의 가독성을 향상시킨다.코드를 변경하기 쉽다.기존의 코드에 무언가 추가하기 쉽다.코드를 테스트하기 쉽다.이것들 이 외에도 있겠지만, 개
오늘은 SwiftUI에서 사용될 아키텍처에 대해서 알아보겠습니다. 아키텍처를 고민하고, 적용하는 이유는 다음과 같다고 생각합니다.코드의 가독성을 향상시킨다.코드를 변경하기 쉽다.기존의 코드에 무언가 추가하기 쉽다.코드를 테스트하기 쉽다.이것들 이 외에도 있겠지만, 개
오늘은 "LayoutPriority"에 대해서 작성해볼까합니다. 레이아웃을 구성할 때, Spacing이나 frame 수식어를 이용해서 layout을 잡아서 많은 UI 문제를 해결하곤 했습니다. 그러다가 "LayoutPriority" 를 알게되었습니다. LayoutP
오늘은 ColorScheme을 변경하는 코드를 작성하면서, CaseIterable, Identifiable 그리고 tag 수식어에 대해서 알아보겠습니다. enum을 생성해서, 앱의 Color Scheme을 light, dark 그리고 automatic 으로 변경하는
오늘은 SwiftUI를 통해서 FlashCard를 만들면서 개념들을 정리해보려고합니다.구현UI 구현 -> ObservableObject 구성 -> Gesture 연결 순으로 진행하겠습니다.UI 구현플래시 카드니까, 카드 UI가 있어야겠죠. 저는 SwiftUIView를
오늘은 함수빌더에 대해서 알아보겠습니다. 함수 빌더(Function Builder) 는 내장 DSL (Domain Specific Languages)를 정의하는 문법입니다. (Swift 5.4 에서 추가됨, 현재는 공식적으로 Function Builder -> Res
오늘은 SwiftUI에서 뒤에가 빛나는 듯한 UI를 구성해볼까 합니다.<결과물>제일 먼저 GeometryReader를 이용하여, 뷰에 대한 크기에 접근할 수 있도록 합니다.그리고 배경을 블러처리할 것이고 그 위에 텍스트나 경계선을 추가할 것이므로 ZStack도
오늘은 SwiftUI 의 Animation에 대해서 간단한 예제를 작성해보겠습니다. animation 이라는 단어는 "생명을 불어넣는 것" 이라는 뜻을 가지고 있습니다. 우리가 UI를 배치만 하면, 스티커처럼 붙어서 아무런 동작도 하지 않습니다. 클릭 했을 때, 단지
Preferencekey - value 로 구성된 데이터 전달 수단입니다.전달 방향은 하위뷰 -> 상위뷰 입니다.구현방법reduce 메소드 우리가 선언한 “PreferenceKey” 를 사용하는 하위뷰를 순회합니다. 동시에, 상위뷰가 접근할 수 있는 값을 취합해줍니다.
클린코드 관련 글들을 보면, 꼭 나오는 문장이 있습니다. “중복된 코드를 제거해라!” 중복된 코드를 제거하기 위해서 가장 쉽게 생각할 수 있는 방법은 메서드로 공통된 로직을 묶어서, 호출만 서로 다른 시점에 하는 방법 입니다.메서드로 하게되면, 어느정도 문제를 해결할