이 UIView
속성 을 사용하는 방법을 알고 싶습니다 clipsToBounds
.
공식 문서는 다음과 같이 말합니다.
clipsToBounds
특성하위 뷰가 뷰의 경계로 제한되는지 여부를 결정하는 부울 값입니다.
토론
이 값을로 설정YES
하면 하위보기가 수신자의 경계에 잘 리게됩니다. 로 설정하면NO
프레임이 수신기의 가시적 경계를 넘어 확장되는 하위 뷰가 잘리지 않습니다. 기본값은NO
입니다.
그러나 이것이 정확히 무엇을 의미하는지 명확하지 않습니다. 어떻게 사용해야 clipsToBounds
합니까? 이 속성을 YES
정확히 설정하면 어떤 결과가 발생 합니까? 아니면 NO
?
답변
내 수퍼 뷰가 각면에 10 단위를 측정하는 상자이고 내 서브 뷰가으로 clipsToBounds
설정되어 폭이 20 단위 YES
인 경우 수퍼 뷰의 경계 내에 맞는 부분 만 표시됩니다. 그렇지 않으면 가로 clipsToBounds
설정되어 있으면 NO
전체 하위보기, 심지어 수퍼 뷰 외부의 부분까지 볼 수 있습니다 (아직 화면에 있다고 가정).
시각적 예로서 스토리 보드에 설정된 다음보기를 고려하십시오.
이것은 흰색 UIView
, 왼쪽 상단 모서리에 간단한 “1”또는 “2”가있는 레이블이므로 view1
또는 로 논의 할 수 있습니다 view2
. 또한 검은 색보기는 흰색보기와 크기가 같지만 원점은 흰색보기의 중앙에 있습니다.
뷰 컨트롤러의 viewDidLoad
메서드에는 다음 코드가 있습니다.
목표 -C :
- (void)viewDidLoad {
[super viewDidLoad];
self.view1.clipsToBounds = YES;
self.view2.clipsToBounds = NO;
}
빠른:
override func viewDidLoad() {
super.viewDidLoad()
self.view1.clipsToBounds = true
self.view2.clipsToBounds = false
}
코드를 실행하고 시뮬레이터 나 장치를 보면 다음과 같은 결과가 나타납니다.
따라서 이러한보기가 동일하게 설정 되었음에도 불구하고 (제외 clipsToBounds
) 다르게 보입니다. 이것이하는 일 clipsToBounds
입니다. 로 설정 YES
하면 상위 결과가 제공되고로 설정 NO
하면 하위 결과 가 제공됩니다.
뷰 계층 구조를 디버깅하면 블랙 박스가 실제로 흰색 뷰의 경계선을 넘어서 확장된다는 것을 더 명확하게 볼 수 있지만, 앱이 실제로 실행 중일 때 뷰 2 만이를 보여줍니다.
답변
이것은 간결한 빠른 답변과 수용된 답변을 의미합니다.
Apple이이 속성의 이름을 변경하는 경우 이름을 clipSubviewsToBounds
.
방금 코드에서 버그가 발생했습니다. 상위 뷰의 높이가 0
. 우리는 그 어떤 요소도 보지 못할 것으로 예상했습니다. 그러나 부모보기의 내용이 나타났습니다.
로 clipToBounds
설정되지 않았기 때문 true
입니다. 로 설정되면 true
하위 뷰 높이가를 넘어 확장 할 수 없으므로 0
전혀 표시되지 않습니다.