TIL(Today I Learned)
11월 3일(수)
학습내용
- SwiftUI(CS193p Lecture2)
- Swift는 수정사항이 있을때마다 뷰를 재생성한다.
- @State를 var 앞에 붙임으로써 뷰 프로퍼티의 immutable 문제를 해결할 수 있다.
- @State를 붙이면 포인터가 된다.
- 즉, 값을 갖는 변수가 아닌 값을 갖는 메모리를 참조하는 변수가 된다.
- 그래서 매번 뷰가 갱신되도 값이 변하지 않는다.
- SF symbol app을 이용하여 애플에서 제공하는 아이콘을 검색할 수 있다.
- ForEach의 인자는 Idetifiable이여야 한다.
- String Array를 순회할 경우 ForEach의 id 파라미터에 ‘.self’를 넣어줌으로써 Identifiable 문제를 임시로 해결할 수 있다.
- ’.self’는 element의 hash 값을 의미한다고 한다. (element는 Hashable 해야한다.)
- Spacer
- 빈공간을 최대한 차지하는 뷰이며, 뷰들의 여백을 만들어주기 위해 사용된다.
- minLength로 최소 길이를 지정해 줄 수 있다.
- LazyVGrid
- 열개수를 지정해줄 수 있고, 행개수는 제한이 없이 뷰를 grid 형식으로 보여주는 View Combiner
- LazyVGrid의 Strategy: 가로로는 최대 길이에 열 개수를 나눈 값으로 요소들의 가로길이를 지정하고, 요소들의 세로길이는 가능한 최소한의 크기로 잡는다.
- 필요할때만(스크린에 나타나는 뷰들만) 만들어서 보여준다.
- GridItem(.fixed()): 고정 크기
- GridItem(.flexible()): 유연한 크기 (크기의 상한, 하한이 없는듯?)
- GridItem(.adaptive(minimum, maximum)): 최소크기와 최대크기 내에서 가능한 크기로 결정 (화면 회전에 맞게 요소들의 크기를 적절하게 지정해줄때 사용)
- aspectRatio
- 뷰의 크기 비를 지정해 줄 수 있는 view modifier
- strokeBorder
- 테두리가 안쪽으로 생기도록 하는 view modifier
- stroke는 바깥쪽으로 테두리가 생기게 하여 다른 뷰 영역을 침해할 수 있다.
참고
- “Why does .self work for ForEach?” : https://www.hackingwithswift.com/books/ios-swiftui/why-does-self-work-for-foreach