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는 바깥쪽으로 테두리가 생기게 하여 다른 뷰 영역을 침해할 수 있다.

참고