본문 바로가기

프로그래밍/iOS

frame VS bounds

  1. 위치과 크기를 표현하는 구조체
    - CGPoint : 위치를 나타내는 구조체
    - CGSize : 크기를 나타내는 구조체
    - CGRect : 위치와 크기를 모두 나타내는 구조체

  2.  조체 종류

     구성 값

     CGPoint

     CGFloat x;

     CGFloat y;

     CGSize

     CGFloat width;

     CGFloat height;

    CGRect

    CGPoint origin; 

    CGSize size;



  3. frame
    - 부모 view를 기준으로 하는 자기 자신(view)의 좌표
    - frame을 변경할 경우 뷰의 위치와 크기를 모두 변경할 수 있음


  4. bounds
    - 자기 자신(view)를 기준으로 한 자기 자신(view)의 좌표
    - bounds를 변경할 경우 뷰의 크기만 변경할 수 있음

< 그림1. image에 대한 frame과 bounds >

image.frame = CGRect(40, 40, 240, 380)

image.bounds = CGRect(0, 0, 240, 380)


4. bounds 조작 실험

- 실험 1: 초반에 frame을 초기화 하여 생성한 뷰의 bounds 변경(initWithFrame 사용)

- 실험 2: 초반에 frame을 초기화 하지 않고 생성한 뷰의 bounds 변경(init만 사용)


5. bounds 조작 실험 결과          - 실험 1: 그림 2-2와 같이 center가 고정되면서 사이즈에 맞게 origin이 재설정.         - 실험 2: 그림 2-3과 같이 center가 (0, 0)이 되면서 사이즈에 맞게 origin이 재설정.                       (init만 할 경우 최초에 frame을 CGRectZero로 설정하기 때문에)

- 결론 : bounds를 조작할 경우 center가 고정되면서 size에 맞게 origin이 재설정. - 추가 : 버튼이 부모 뷰를 벗어날 경우(그림2-3) 벗어난 부분에 대해서는 UserInteraction이 불가능.


                          <그림2-1. 기본 뷰>                    <그림2-2. 실험 1>                    <그림2-3. 실험 2>






'프로그래밍 > iOS' 카테고리의 다른 글

NSAutoreleasePool VS @autorelease block  (0) 2017.04.10
iOS 식별자(identifier)  (2) 2017.04.07
NSURL의 속성  (0) 2017.04.07
nil, Nil, null, NSNull의 차이  (0) 2017.04.06
new VS alloc init  (2) 2017.04.05