SwiftUI107 22. [SwiftUI] Ternary Operator 삼항 연산자 if else 구문을 단 한줄로 줄일 수 있는 삼항 연산자를 활용해보자. condition ? true : false 위 코드는 다소 비효율적이다. 색만 바꾸면 되는데 if else 구문을 타고 새로운 RoundedRectangle을 그리는 구조이기 때문이다. (또한 중복되는 코드도 있다.) 삼항 연산자를 활용하면 중복되는 코드도 줄이고, 더욱 간단하게 같은 로직을 구현할 수 있다. 다양한 modifier에 삼항연산자를 적용할 수 있다. 아래의 예시를 참고하자. // Created by Toughie on 2023/04/23. // import SwiftUI struct TernaryOperator: View { @State var isStartingState: Bool = false var body: .. 2023. 4. 23. 21. [SwiftUI] 조건문(if/else) 프로그래밍의 기본 원칙 순차, 반복, 조건에서 '조건'이다. Switch - case문을 많이 쓰기도 하지만 if - else if - else문도 조건이 필요한 경우 자주 쓰인다. (당연하게도 첫 if문에서 true가 나오면 뒤의 else if, else 블럭은 실행되지 않는다. *단축평가_short-circuit evaluation) !은 not, ||은 or라는 것만 체크하고 넘어가자. 원하는 조건에 따라 뷰에 변화를 주거나, 뷰를 숨겼다가 나타나게 하는 등 다양한 방식으로 조건문을 활용할 수 있겠다. + (iOS 기본 제공) 로딩상태를 나타내는 저 돌아가는 뷰는 ProgressView()이다. 2023. 4. 23. 20. [SwiftUI] @Binding 이전 시간에 공부한 @State와 마찬가지로 property wrapper인 @Binding에 대해 알아보자. 기본적으로 @State 변수는 속해있는 뷰를 업데이트 하는데 사용된다. 하지만 앱을 만들다 보면 뷰(부모뷰) 안에 여러 뷰들(자식뷰)이 있는 경우가 많다. (대부분이 그렇다.) 만약 버튼을 따로 뷰로 만들었고, 부모뷰에서 버튼뷰를 생성하는 상황을 가정하자. 그러면 버튼뷰(자식뷰)에서 부모뷰의 @State변수를 변경하고 싶으면?? (부모 뷰를 업데이트 하고 싶으면) 이 때 사용하는 것이 @Binding이다. 즉 바인딩은 상위 뷰(부모 뷰)와 하위 뷰(자식 뷰) 사이에서 @State 변수를 연결하는 것이다. 즉 하위 뷰에서 상위 뷰를 업데이트 하는 상황에서 필요하다. 예시코드를 보며 좀 더 자세히 .. 2023. 4. 23. 19. [SwiftUI] Extract Subviews 이전 시간에는 변수(계산 속성)에다 스택 등을 담았다면, 이번에는 아예 subview로 추출하는 방법으로 코드를 정리해 보자. 구조체를 따로 만드는 방식인데, 생성자를 이용해서 구성은 같지만 내용물은 다른 뷰들을 쉽게 반복해서 그려낼 수 있다. (생성자를 따로 커스텀 하지 않는 이상, 멤버와이즈 이니셜라이즈 활용) 먼저 아래부터 MyItem이라는 서브뷰를 만들고 title, count, color 세 프로퍼티가 있다. 이를 활용해 (생성자를 통해) 다양한 뷰 인스턴스를 찍어낼 수 있다. HStack으로 묶인 서브뷰들을 contentLayer 변수에 담았고 이를 body에서 호출한다. ForEach, 그리고 각 프로퍼티에 할당할 값들을 배열 등으로 관리하면 더욱 효율적으로 많은 뷰들을 생성할 수 있을 것이다. 2023. 4. 21. 18. [SwiftUI] Extract Functions & Views (코드 정리) body 파트가 비대해져서 코드를 읽기 어려운 현상을 최대한 막기 위해 적용할 수 있는 방법 (가독성 증가) 예시를 위해 다소 과할 수 있으나, 버튼의 액션 파트 코드를 함수로 따로 빼서 정리했고, body 안의 VStack 또한 변수로 따로 빼서 정리한 모습. 가독성, 유지보수를 위해서 body에 코드를 너무 막 쓰기 보다는 이런 식으로 추출해서 따로 정리하는 습관을 들이자. 2023. 4. 21. 17. [SwiftUI] @State property wrapper 뷰가 변수의 상태 변화를 관찰하도록! 만약 변수에 변화가 생기면 뷰를 업데이트 한다. https://toughie-ios.tistory.com/108 [SwiftUI] PropertyWrapper, @State, @Binding 스스챌 에러를 해결하던 중.. @State와 @Binding을 사용하는 경우도 많았고, 해당 개념이 있었다면 더 빠르게 해결 할 수 있었을 문제도 있어서 간단하게 정리해보려 한다. Property wrapper 우선 프로퍼 toughie-ios.tistory.com 아래는 @State변수를 활용한 뷰의 변화를 보여주기 위한 간단한 예시이다. 버튼을 누르거나 스와이프를 하면 배경색, 타이틀, 카운트가 바뀐다. // Created by Toughie o.. 2023. 4. 21. 이전 1 ··· 11 12 13 14 15 16 17 18 다음