SwiftUI/SwiftUI(Basic)66 [49] custom Model 커스텀 모델/ Identifiable ⭐️custom Model 커스텀 모델/ Identifiable⭐️ 구조체, 클래스와 같은 커스텀 타입은 관련된 속성, 메서드들을 모아서 사용하는데 의의가 있음을 기억하자. 이 예시를 보면 리스트 안에 셀에 정보(속성)가 굉장히 많이 들어있다. 닉네임, 이름, 팔로워수, 온라인상태여부, 검증여부 등.. 따라서 해당 속성들을 묶어서 새로운 모델을 만들어 보자. // Created by Toughie on 2023/05/02. // import SwiftUI //다양한 속성을 담기 위한 커스텀 모델 struct UserModel: Identifiable { var id: String = UUID().uuidString let nickName: String let userName: String let foll.. 2023. 5. 3. 48. [SwiftUI] .onTapGesture() 탭 제스쳐 말 그대로 탭(터치) 했을 때 원하는 동작을 할 수 있게 할 수 있는 탭 제스쳐에 대해 알아보자. (VS 버튼) 기본적인 동작은 비슷해서 선택 가능한데, 코드 가독성은 탭제스쳐를 사용하는 것이 더 좋다고 생각한다. 기본적으로 버튼은 누르면 눌렸다는 것을 알 수 있게 색상이 변하는 것을 알 수 있음. but 탭제스쳐는 따로 색상이 변하는(하이라이트)효과는 없음. 마지막 하트는 2번 탭하면 동작함. (탭 횟수를 간편하게 지정할 수 있음) // Created by Toughie on 2023/05/02. // import SwiftUI struct TapGesturePrac: View { @State var isSelected: Bool = false var body: some View { VStack(spa.. 2023. 5. 2. 47. [SwiftUI] Optional Unwrapping( if let / guard let ) 옵셔널 값을 안전하게 벗겨내는 (Unwrapping) 하는 방법에 대해 알아보자. 주로 if let 바인딩, guard let 바인딩을 사용한다. 왜 옵셔널 값을 안전하게 벗겨내야 하는가? 간혹 옵셔널 값에 ! 느낌표를 붙여서 강제로 언래핑 하는 코드를 본적이 있었을 것이다. -> 앱이 꺼질 수 있다...! 먼저 옵셔널 변수는 값이 없을 수도 있기 때문에, 변수를 사용하기 전에 nil체크를 꼭 해줘야 한다. (예: var a: Int?로 변수를 선언하면 자동으로 nil이 할당된다. var a: Int? = nil과 같음) 만약 옵셔널 변수에 값이 할당이 되어 있지 않는데 !을 사용해 강제로 언래핑을 시도하면 런타임 오류가 발생한다.(앱이 꺼지는, 크래시가 난다.) WHY? 옵셔널 변수를 선언하면 nil.. 2023. 5. 2. 46. [SwiftUI] .onAppear/disappear & DispatchQueue, 동시성 프로그래밍/ 비동기적 실행 뷰가 화면에 나타나거나 사라질 때 원하는 동작을 실행할 수 있는 .onAppear() / .onDisappear() 메소드에 대해 알아보자. 관련 예시 코드를 보기 전에 필요한 개념들을 먼저 정리해 보자. .onAppear() 사실 정확하게 말하면 뷰가 로드되어 화면에 배치되고, 화면에서 표시될 준비가 된 후에 실행된다. 즉 유저 눈에 보이고 나서 실행되는 것이 아니라, 뷰가 화면에 나타나기 직전, 즉 화면에 나타날 예정인 시점에 실행되는 것이다. 뷰가 처음으로 나타날 때만 호출되고, 이후 뷰가 갱신될 때에는 호출되지 않는다. .onDisappear() 뷰가 화면에서 사라질 예정인 시점에 실행된다. (다른 뷰로 넘어갈 때 등) ex. 화면에서 노래가 나오다가 다른 화면으로 넘어가면 노래가 멈추는 등 Co.. 2023. 5. 2. 43. [SwiftUI] 마크업, 문서화 (코드 정리) 본인이 알아보기 위해서 or 협업을 위해 주석처을 사용하는 경우가 많다. 단순한 백슬래시 두 개를 활용한 // 뿐만 아니라 좀 더 코드를 체계적으로 관리할 수 있는 방법을 알아보자. //기본 주석 /* 멀티라인 주석 */ 마크업 주석 코드 섹션 분리를 위해 사용. 미니맵에 표시됨. // MARK: ~~ 코드 폴딩 ( ... 되어 있는 블록) 긴 코드를 접어둘 수 있다. 더블클릭하면 펼쳐짐 접는 방법 option + command + leftArrow 펼치는 방법 option + command + rightArrow OR 더블클릭 코드 관련 설명이 길 때, 혹은 자신의 업무를 기록해 둘 때 유용해 보인다. DOCUMENTATION 함수, 변수 등을 option을 누른 채로 보면 관련 정보가 뜨는 것을 본 .. 2023. 5. 2. 42. [SwiftUI] 다크모드, 적응형 컬러 iOS 13부터 추가된 다크모드로 인해 컬러에 대해 조금 더 신경써야 할 필요가 생겼다. (나는 다크모드를 매우 선호한다.) 라이트모드, 다크모드에 상관 없이 항상 동일한 색을 보여줄 것인가? 아니면 모드에 따라 다른 색을 보여줄 것인가? 등을 고려하기 위해 알아야 하는 것들을 정리해 보자. 예시를 보면 Primary, Secondary는 라이트/다크모드 설정에 따라 화이트/블랙이 바뀌는 것을 알 수 있다.(네비게이선 타이틀도 마찬가지) 다만 Black, white, red는 라이트/다크모드 상관 없이 항상 각자의 색으로 보인다. 또한 Globally adaptive, Locally adaptive는 라이트/다크모드 설정에 따라 다른 색을 보이고 있다. 코드를 통해 자세히 살펴보자. // Created .. 2023. 5. 2. 이전 1 2 3 4 5 6 ··· 11 다음