CodingBottle Mobile 09

YEOMI·2023년 11월 29일

Swfit - Coding Bottle

목록 보기
12/13

질문 리스트

  • StackView의 장점과 단점에 대해 설명하시오
  • Frame과 Bounds의 차이점에 대해 설명하시오

StackView의 장점과 단점에 대해 설명하시오

2015년 iOS 9에서 처음으로 등장, Stack View는 오토레이아웃을 편리하게 사용하도록 도와주기 위해 만들어졌습니다.

스택 뷰는 자동 레이아웃을 사용하여 정렬된 뷰의 위치와 크기를 조정합니다. 스택 뷰는 첫 번째와 마지막으로 정렬된 뷰를 스택 축을 따라 해당 가장자리에 정렬합니다. 수평 스택에서 이는 첫 번째로 정렬된 뷰의 앞쪽 가장자리가 스택의 앞쪽 가장자리에 고정되고 마지막으로 정렬된 뷰의 뒤쪽 가장자리가 스택의 뒤쪽 가장자리에 고정됨을 의미합니다. 수직 스택에서는 위쪽 및 아래쪽 가장자리가 각각 스택의 위쪽 및 아래쪽 가장자리에 고정됩니다.

장점

  • 간편한 레이아웃 관리: Stack View는 자식 뷰의 위치와 크기를 자동으로 관리하기 때문에, 수동으로 제약 조건을 추가하거나 관리할 필요가 없습니다. 이는 복잡한 레이아웃을 구성하는 데 큰 도움이 됩니다.
  • 동적인 UI 조정: 화면 크기나 방향이 변경될 때, Stack View는 자식 뷰의 배치를 자동으로 조정합니다. 이는 다양한 장치 크기와 방향에 대응하는 UI를 만드는 데 유용합니다.
  • 간편한 뷰 추가 및 제거: Stack View에서 뷰를 추가하거나 제거하는 것은 매우 간단합니다. Stack View는 자동으로 레이아웃을 조정하여 새로운 뷰를 반영하거나 제거된 뷰를 적용합니다.
  • 중첩된 StackView를 생성해 복잡한 레이아웃을 구성하는 데에도 유용합니다.

단점

  • 복잡한 레이아웃 제한: Stack View는 선형적인 레이아웃만 지원하므로, 더 복잡한 레이아웃을 구성하려면 여러 Stack View를 중첩해야 합니다. 이 경우 레이아웃이 복잡해지고, 관리하기 어렵습니다.
  • 세세한 조절 불가능: Stack View는 자식 뷰의 위치와 크기를 자동으로 관리하기 때문에, 세세한 조절이 필요한 경우 제한적일 수 있습니다. 예를 들어, 특정 뷰만 다른 뷰와 다르게 배치하거나 크기를 조절하려면 추가적인 작업이 필요합니다.
    ->이럴 경우 AutoLayout을 직접 사용.

질문

  • StackView를 활용한 UI 디자인에서, 각 뷰의 우선순위를 어떻게 조절할 수 있고, 이것이 레이아웃에 어떤 영향을 미칠 수 있을까요?
  • StackView를 사용할 때, 뷰의 내부 컨텐츠가 동적으로 변할 때의 최적화를 위한 권장 사항은 무엇인가요?

Frame과 Bounds의 차이점에 대해 설명하시오

UIView의 인스턴스 프로퍼티로

open var frame: CGRect

open var bounds: CGRect

CGRect: 사각형의 위치와 크기를 포함하는 구조체.

Frame: SuperView(상위뷰)의 좌표 시스템안에서 View의 위치와 크기를 나타냅니다. 
frame의 핵심 -> SuperView(상위뷰) (상위뷰라는 것은 한단계 상위뷰를 의미)

frame은 뷰의 크기와 부모 뷰(Superview) 기준의 상대적 위치를 나타냅니다. 예를 들어, 뷰의 frame이 (x: 50, y: 50, width: 100, height: 100)이라면, 뷰의 왼쪽 상단 모서리는 부모 뷰의 왼쪽 상단 모서리로부터 오른쪽으로 50포인트, 아래로 50포인트 떨어져 있으며, 뷰의 너비는 100포인트, 높이는 100포인트라는 것을 의미합니다.

Bounds : View의 위치와 크기를 자신만의 좌표 시스템안에서 나타냅니다.
Bounds의 핵심 -> 자신만의 좌표 시스템

bounds는 뷰의 크기와 자신의 좌표계에서의 위치를 나타냅니다. bounds의 x와 y 좌표는 뷰의 내부에서의 위치를 나타내고, 이는 보통 뷰의 왼쪽 상단 모서리를 기준으로 합니다. 따라서 대부분의 경우 bounds의 x와 y는 0입니다. bounds의 width와 height는 frame의 width와 height와 같습니다.

간단히 말해서, frame은 부모 뷰에 대한 상대적 위치와 크기를, bounds는 자신의 좌표계에 대한 위치와 크기를 나타냅니다. 뷰가 회전하거나 스케일이 변경되면 frame은 변경되지만, bounds는 변하지 않습니다.

질문

  • Frame을 사용하는 경우와 Bounds를 사용하는 경우 각각 어떤 상황에서 유용하게 적용될 수 있을까요?

  • Frame과 Bounds를 혼동하지 않고 사용하기 위한 개발 팁이 있다면 어떤 것이 있을까요?

profile
뭐라도 좀 해라

0개의 댓글