Frame vs Bounds(1)

lyoodong·2023년 7월 30일

사전에 알고 있어야할 개념

  1. CGRect 타입에 대한 이해
  • CGRect 타입은 UIView 객체의 좌표와 사이즈를 표현하는 타입이다.
let size:CGSize = CGSize(width: <#T##CGFloat#>, height: <#T##CGFloat#>)
let point:CGPoint = CGPoint(x: <#T##CGFloat#>, y: <#T##CGFloat#>)

let frame:CGRect = CGRect(origin: <#T##CGPoint#>, size: <#T##CGSize#>)
let bounds:CGRect = CGRect(origin: <#T##CGPoint#>, size: <#T##CGSize#>)

위 코드에서 알 수 있듯이, CGRect 타입의 경우 매개변수로 CGPointCGSiz 타입을 받는데 이는 각각 좌표와 사이즈(해당 뷰의 크기)에 해당하는 값이다.

  1. 좌표(CGPoint)
  • 좌표란 평면 또는 공간에서 위치를 나타내는 방식이다. 일반적으로 우리가 중, 고등학교 수학시간에 학습한 내용의 2차원 좌표계의 개념과 동일하다. x는 수평의 위치를 y는 수직의 위치를 표현한다.
  • 다만, swift에서 좌표는 몇 가지 다른 점이 있는데, 원점의 위치가 뷰의 좌측 최상단에 위치한다는 점, y값이 증가하면 원점을 기준으로 아래로 이동한다는 점을 유의해야 한다.
  1. 사이즈(CGSize)
  • 사이즈는 상식적으로 알고 있는 사이즈의 개념과 동일한다. width, height 값을 인자로 받는다.

Frame, Bounds의 공통점과 차이점

  1. 공통점
  • 두 개념 모두, 뷰의 좌표와 사이즈를 반환하는 CGRect 타입의 변수이다.
  • 하지만, 좌표를 잡는 기준사이즈를 나타내는 방식에 있어서 두 개념은 차이를 보인다.
  1. 차이점1 : 좌표를 잡는 기준
  • 우선 frame, bounds에 대한 공식문서의 설명을 인용하면 아래와 같다.

  • Frame
    The frame rectangle, which describes the view’s location and size in its superview’s coordinate system.

  • Bounds
    The bounds rectangle, which describes the view’s location and size in its own coordinate system.*

  • Frame은 superview의 좌표계를 기준으로 view의 좌표와 사이즈를 나타내는 반면, Bounds는 자기 자신의 좌표계를 기준으로 view의 좌표와 사이즈를 나타낸다.

  1. 차이점2 : 사이즈를 나타내는 방식
  • Bounds는 자기 자신의 view크기를 사이즈로 리턴한다.
  • 반면, Frame은 superview를 기준으로 자기 자신이 차지하고 있는 사각형 크기를 사이즈로 리턴한다.

0개의 댓글