Apple 공식문서
공통적으로 view.
으로 접근
✅대부분의 속성은 subView에도 영향을 준다.
isHidden
- 체크 시 안보이게 됨
- 코드에서는 outlet으로 view를 연결 후,
.isHidden
속성으로 접근하면 된다.Bool
alpha
- 0~1 의 값으로 1이면 완전히 보이고 0으로 갈수록 투명해진다.
- 코드에서는 outlet으로 view를 연결 후,
.alpha
속성으로 접근하면 된다. CGFloat
tintColor
- 뷰에서 사용하는 강조 색상
accentColor
라고도 부름
- 모든 뷰에서 tintColor을 사용하는 것은 아님.
- Switch에서는 OnTint, ThumbTint 속성 등을 사용
- 코드에서는 outlet으로 view를 연결 후,
.tintColor
속성으로 접근하면 된다. CGColor
clipsToBounds
true
라면 subview들이 superview의 경계에 맞춰 잘려 표시된다.
- 기본값은
false
- 코드에서는 outlet으로 view를 연결 후,
clipsToBounds
속성으로 접근하면 된다. Bool
isUserInteractionEnabled
false
라면 touch, press, keyboard, focus event가 인식되지 않는다.
- 기본값은
true
- switch, slider 등은 true고 imageView나 textLabel등은 false
isMultipleTouchEnabled
- 멀티터치는 뷰를 여러 손가락을 터치하는 이벤트
- 기본적으로
false
isExclusiveTouch
- 인스펙터 뷰에는 없으므로 코드로만 변경 가능
- 터치이벤트가 전달되는 범위를 결정하는 속성
- 기본 값이
false
true
면 터치가 인식된 뷰에만 전달하고 나머지에겐 전달하지 않음.
- 버튼이 여러개 있고 실수로 여러개를 터치해도 한 가지 버튼만 액션을 실행해야 할 때
true
로 설정하면 된다.
터치 이벤트 발생 시 전달 원리
- iOS가 터치 이벤트가 발생한 위치를 인식. 실행중인 앱으로 전달.
UIWindow scene
> Window
> Root VC
> Root View
> Target View
순으로 전달.
frame, bounds
- frame: 슈퍼뷰의 로컬 좌표계에서의 현재 뷰의 위치, 크기 저장
- bounds: 현재 뷰의 로컬 좌표를 기준으로 위치와 크기 저장. 위치는 보통 x,y 모두 0. 크기 == frame 크기
- 위치와 크기 모두 필요할 때는 frame, 크기만 사용한다면 bounds를 사용해도 무관.
center
- 뷰의
센터좌표계
가 저장되어있는 속성.
- 뷰를 이동할 때 사용
superview
- 코드에서 슈퍼뷰에 접근할 때 사용
- Optional UIView
- 본인이 superview라면
nil
- 계층에 추가되지 않은 상태인 경우
nil
subviews
window
- 뷰를 표시하려면 윈도우 객체는 필수
- 뷰를 표시하는 윈도우에 접근하고자 할 때 사용
contentMode
- 뷰의 크기가 바뀔 때 내용을 어떻게 배치할지 정하는 속성
- 주로 imageView에만 사용
- UIView.ContentMode (enum)
scaleToFill
: 프레임을 빈틈없이 채움. 종횡비는 유지되지 않음. 화면 전체를 벗어나지 않음.
scaleAspectFit
: 종횡비를 유지하면서 화면을 채운다. 빈 공간 발생 가능.
scaleAspectFill
: 이미지를 프레임에 빈틈없이 채움. 화면 전체를 벗어나서 잘릴 수 있음.
redraw
: 비추천. 성능과 관련.
- 이외 center, right, left 등은 이미지 크기를 변화시키지 않고 위치만 조정됨.
tag
Int
- 정수 값을 가지고 뷰에 접근할 수 있다.
- outlet을 이용하지 않아도 뷰에 접근할 수 있다.
view.viewWithTag(100) as? UIImageView
- tag의 값이 정수이기 때문에 어떤 뷰인지 직관적으로 알 수 없으며, 관리하기 까다롭다. outlet 연결을 추천한다.