분류 전체보기279 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. 16. [SwiftUI] Button() Button(_ title:action:) -> String title로 간편하게 만들 수 있음 Button(action:label:) -> label에는 어떤 view든 올 수 있음 (커스터마이징 자유롭게 가능) action에는 버튼이 눌렸을 때 작동할 원하는 동작을 클로저로 전달하면 되고 label에는 원하는 뷰로 버튼의 모습을 커스터마이징 할 수 있다. // Created by Toughie on 2023/04/20. // import SwiftUI struct Buttons: View { @State var title: String = "This is fancy title" var body: some View { VStack(spacing: 20) { Text(title) .font(.largeT.. 2023. 4. 20. 15. [SwiftUI] .ignoresSafeArea() & .edgesIgnoringSafeArea() https://developer.apple.com/design/human-interface-guidelines/foundations/layout/ Layout - Foundations - Human Interface Guidelines - Design - Apple Developer Layout Using a consistent layout that adapts to various contexts makes your experience more approachable and helps people enjoy their favorite apps and games on all their devices. Guides and safe areas A layout guide defines a rectangular .. 2023. 4. 20. 이전 1 ··· 33 34 35 36 37 38 39 ··· 47 다음