- 위치과 크기를 표현하는 구조체
- CGPoint : 위치를 나타내는 구조체
- CGSize : 크기를 나타내는 구조체
- CGRect : 위치와 크기를 모두 나타내는 구조체 - frame
- 부모 view를 기준으로 하는 자기 자신(view)의 좌표
- frame을 변경할 경우 뷰의 위치와 크기를 모두 변경할 수 있음 - bounds
- 자기 자신(view)를 기준으로 한 자기 자신(view)의 좌표
- bounds를 변경할 경우 뷰의 크기만 변경할 수 있음
구조체 종류 | 구성 값 |
CGPoint |
CGFloat x; |
CGFloat y; |
|
CGSize |
CGFloat width; |
CGFloat height; |
|
CGRect |
CGPoint origin; |
CGSize size; |
< 그림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 |