ถ้าซูเปอร์วิวของฉันเป็นช่องที่มีขนาด 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
ใช้ได้ดี