Nếu chế độ xem siêu cấp của tôi là một hộp có kích thước 10 đơn vị mỗi bên và chế độ xem phụ của tôi rộng 20 đơn vị, clipsToBounds
được đặt thành YES
, tôi sẽ chỉ thấy phần chế độ xem phụ phù hợp với giới hạn của chế độ xem siêu tốc. Ngược lại, nếu clipsToBounds
được đặt thành NO
, tôi sẽ thấy toàn bộ chế độ xem phụ, thậm chí cả các phần bên ngoài chế độ xem siêu cao (giả sử chúng ta vẫn đang ở trên màn hình).
Để làm ví dụ trực quan, hãy xem xét các chế độ xem sau được thiết lập trên bảng phân cảnh:
Đây là một màu trắng UIView
, một nhãn ở góc trên cùng bên trái với đơn giản là "1" hoặc "2" để tôi có thể thảo luận về chúng là view1
hoặc view2
. Ngoài ra, chế độ xem màu đen có cùng kích thước với chế độ xem màu trắng, nhưng điểm gốc của nó là ở tâm của chế độ xem màu trắng.
Trong viewDidLoad
phương thức của bộ điều khiển chế độ xem , chúng ta có đoạn mã sau:
Mục tiêu-C:
- (void)viewDidLoad {
[super viewDidLoad];
self.view1.clipsToBounds = YES;
self.view2.clipsToBounds = NO;
}
Nhanh:
override func viewDidLoad() {
super.viewDidLoad()
self.view1.clipsToBounds = true
self.view2.clipsToBounds = false
}
Khi chúng tôi chạy mã và xem xét trong trình mô phỏng hoặc trên thiết bị, chúng tôi nhận được kết quả sau:
Vì vậy, mặc dù các khung nhìn này được thiết lập giống nhau (ngoại trừ clipsToBounds
), chúng trông khác nhau. Đây là những gì clipsToBounds
hiện. Đặt nó thành YES
sẽ cung cấp kết quả trên cùng, trong khi đặt nó để NO
cung cấp kết quả dưới cùng.
Nếu chúng tôi gỡ lỗi hệ thống phân cấp chế độ xem, chúng ta có thể thấy rõ ràng hơn rằng cả hai hộp đen đều thực sự mở rộng qua người nội trú của chế độ xem màu trắng, nhưng chỉ chế độ xem 2 hiển thị điều này khi ứng dụng thực sự đang chạy:
UITextView
bóng không nhìn thấy được, nếu thuộcclipsToBounds
tính bằngtrue
; ? Nếu cófalse
, hoạt động tốt