iOS/SWIFTUI
-
[SwiftUI] - GeometryReaderiOS/SWIFTUI 2024. 7. 26. 20:57
오늘은 어려운 GeometryReader를 가져와봤다. 솔직히 GeometryReader는 거의 모르는 상태로 왜 쓰는지도 모르고 사용해 왔던 것 같다. 하지만 이번 기회에 개념을 확실히 잡아 내 마음대로 자유자재로 사용하고자 하는 취지로 포스팅하게 되었다. GeometryReader OverView를 해석하자면 부모뷰의 레이아웃 정보를 불러오는 데 사용된다고 한다.GeometryReader는 GeometryProxy를 파아미터로 받는 클로져를 반환하는데, 여기서 GeometryProxy는 GeometryReader 내부에서 사용되는 뷰의 기하학적 정보를 포함하고 있다. 여기서 말하는 정보는 GeometryProxy의 attribute를 살펴보면 되는데, size : 뷰의 크기 정보safeAreaIns..
-
[SwiftUI] - @ViewBuilderiOS/SWIFTUI 2024. 7. 16. 22:29
오랜만이다. 요즘 프로젝트를 하면서 뷰 관련코드를 최적화 하려고 노력중이다.뷰의 재사용성을 높이기 위해 연구를 하던 중 @ViewBuilder라는 키워드를 알게 되었다.사실 우리도 모르게 우리는 ViewBuilder를 사용하고 있었는데, 과연 이 녀석은 무슨 녀석일까? @ViewBuilder일반적으로 ViewBuilder는 closure를 통해 여러 자식 뷰를 제공할때 사용할 수 있다. 예를 들자면, contextMenu 함수는 ViewBuilder를 통해 하나 이상의 뷰를 생성하는 closure를 허용한다. @ViewBuilder는 SwiftUI에서 사용되는 특수한 속성 래퍼(attribute wrapper)로, 여러 뷰를 하나의 클로저로 묶어서 반환할 수 있게 해주며 이를 여러 개의 뷰를 조합해 하..
-
[SwiftUI] #문법 - @ObservedObjectiOS/SWIFTUI 2023. 4. 14. 15:11
오늘은 swiftui에서 사용하는 중요한 프로퍼티 래퍼에 대해 포스팅을 해보겠다. @ObservedObject 뷰의 변경점이 감지 되면 화면을 업데이트하는 역할을 한다. iOS 14부터 등장한 @StateObject와 매우 흡사한데, 그 차이는 @StateObject를 포스팅할 때 자세히 차이를 설명하겠다. 관찰 가능한 객체를 구독하고 관찰 가능한 객체가 변경될 때마다 보기를 무효화하는 속성 래퍼 유형 개발 문서에 있는 내용을 그대로 직역하면 다음과 같다. 이전의 포스팅한 @State 같은 경우는 한 구조체 안에서 선언하고 다른 뷰와 데이터를 공유할 수 없는 것이 특징이다. 여기서 포인트는 데이터의 변경이 감지 되면 뷰를 새로 그린다는 것이다. 자세히 알아보자 일단 @ObservedObject를 사용하기..
-
[SWIFTUI] #문법 - @BindingiOS/SWIFTUI 2023. 1. 4. 03:09
오늘은 진짜 정말로 오랜만의 swiftui시간이다. 아직 완벽하지는 않지만 swiftui로 프로젝트도 몇개 완성했고 많이 익힌것 같다. 당연히 사용하는 여러 문법들이지만 그 역할을 자세하게 공부해본적은 없는 것 같아서 오늘 포스팅을 시작하게 되었다. 우리가 한 뷰로 모든 기능을 구현하는 것은 매우 힘든일이다.(특히나 사용자 입장에서..) 그렇기 때문에 여러뷰로 이루어질 어플리케이션을 개발해야할텐데 뷰마다 보여지는 정보가 모두 다르겠지만 분명 같은 데이터를 공유하는 뷰도 있을 것이다. 그 방법중에 하나는 바로 Binding을 사용하는 것이다. @Binding 상위 뷰에서 하위 뷰와 데이터를 공유하려할 때 사용하는 어노테이션 지난시간의 State의 이어서 Binding이다. State와 마찬가지로 View ..
-
[SWIFTUI] #문법 - @StateiOS/SWIFTUI 2022. 10. 9. 01:17
요즘 SwiftUI공부를 엄청하고 있다. 단기간내에 많은 정보를 습득하다보니 정리할 시간이 필요하다고 느껴서 오늘은 오랜만에 SwiftUI 포스팅을 하기로 했다. @State State는 사용자가 특정 액션을 취했을 때 사용자 인터페이스를 업데이트 하여 상태를 변경하는 것 정의는 이렇다. 슬프게도 우리가 그냥 변수를 선언하여 특정 액션에서 변수를 사용한다고 해서 바뀌지 않는다. 그래서 SwiftUI에서는 변수앞에 @State 키워드를 붙여줘서 그 변수를 상태변수로 바꿔줘야한다. @State의 특징 실시간 데이터 공유간에 사용할 수 있다. 상태를 변경할 때 body의 속성이 재설정 됨(뷰가 랜더링) struct에서만 사용가능 View 사이엔 데이터 공유를 할수 없다 → @ObservedObject View..