Якщо мій нагляд - це вікно розміром 10 одиниць з кожної сторони, а мій підпогляд шириною 20 одиниць із clipsToBounds
встановленим значенням 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 показує це, коли програма насправді працює:
UITextView
тіні не видно, якщоclipsToBounds
властивість дорівнюєtrue
; ? Якщо це такfalse
, працює чудово