[iOS] View의 공통 속성

RudinP·2024년 2월 7일
0

Study

목록 보기
139/227

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

  • [UIView] 배열
  • 서브 뷰 배열

window

  • 뷰를 표시하려면 윈도우 객체는 필수
  • 뷰를 표시하는 윈도우에 접근하고자 할 때 사용

contentMode

  • 뷰의 크기가 바뀔 때 내용을 어떻게 배치할지 정하는 속성
  • 주로 imageView에만 사용
  • UIView.ContentMode (enum)
    • scaleToFill: 프레임을 빈틈없이 채움. 종횡비는 유지되지 않음. 화면 전체를 벗어나지 않음.
    • scaleAspectFit : 종횡비를 유지하면서 화면을 채운다. 빈 공간 발생 가능.
    • scaleAspectFill : 이미지를 프레임에 빈틈없이 채움. 화면 전체를 벗어나서 잘릴 수 있음.
    • redraw: 비추천. 성능과 관련.
    • 이외 center, right, left 등은 이미지 크기를 변화시키지 않고 위치만 조정됨.

tag

  • Int
  • 정수 값을 가지고 뷰에 접근할 수 있다.
    • outlet을 이용하지 않아도 뷰에 접근할 수 있다.
view.viewWithTag(100) as? UIImageView 
//UIView 이외 subClass의 속성에 접근하려면 타입캐스팅 필요. 
//파라미터는 설정한 tag값을 넣으면 된다.
  • tag의 값이 정수이기 때문에 어떤 뷰인지 직관적으로 알 수 없으며, 관리하기 까다롭다. outlet 연결을 추천한다.
profile
곰을 좋아합니다. <a href = "https://github.com/RudinP">github</a>

0개의 댓글