Apple-CS-interview / iOS-CS-interview

7 stars 0 forks source link

Bounds 와 Frame 의 차이점을 설명하시오. #37

Open Do-hyun-Kim opened 9 months ago

ronick-grammer commented 8 months ago

Bounds와 Frame의 차이

FrameBounds 모두 CGRect 타입이다. 그리고 이 CGRect는 뷰의 위치를 나타내는 CGPoint 타입의 origin 프로퍼티와 뷰의 사이즈를 나타내는 CGSize 타입의 size 프로퍼티를 가지는 구조로 되어있다.

📝 참고 사이트

vichye-1 commented 8 months ago

Frame

Bounds

출처

Do-hyun-Kim commented 8 months ago

Bounds 와 Frame 의 차이점을 설명하시오.

✅ CGPoint

// viewPoint를 통해 x,y 좌표를 나타낼 수 있다.
let viewPoint: CGPoint = CGPoint(x: 100, y: 300)

✅ CGSize

스크린샷 2023-12-28 오후 3 34 01
let viewSize: CGSize = CGSize(width: 400, height: 500)

✅ CGRect

let viewFrame: CGRect = CGRect(origin: viewPoint, size: viewSize)
let view: UIView = UIView(frame: viewFrame

스크린샷 2023-12-28 오후 3 33 18

🚀 Bounds


시뮬레이터 bounds 실행 사진
스크린샷 2023-12-28 오후 3 31 10 스크린샷 2023-12-28 오후 3 31 29

🚀 Frame

뷰 계층 구조

스크린샷 2023-12-28 오후 3 32 34 스크린샷 2023-12-28 오후 3 32 04

📝 참고 사이트

Hminchae commented 8 months ago

CGPoint, CGSize, CGRect 타입

View를 그릴땐 (x, y) 좌표와 width, height값을 알아야 함. 그러나 실제 UIView를 init할 땐 frame의 파라미터로 CGRect가 필요하다.

  1. CGPoint : (x, y)좌표를 설정할 수 있음
    let position: CGPoint = .init(x: 100,  y: 200)
  2. CGSize : (width, height)좌표를 설정할 수 있음
    let position: CGPoint = .init(width: 100,  height: 200)
  3. CGRect : CGSize와 CGPoint를 품음

    • 타입 구조체
      
      public struct CGRect {

    public init()

    public init(origin: CGPoint, size: CGSize)

    public var origin: CGPoint

    public var size: CGSize }

    - 사용
    ```swift
    let rect: CGRect = .init(origin: CGPoint(x: 100, y: 100), size: CGSize(width: 150, height: 150))

bounds

자신의 좌표계에서 View의 위치와 크기를 나타내는 것

참고