Jika superview saya adalah kotak berukuran 10 unit di setiap sisi, dan subview saya lebar 20 unit, dengan clipsToBounds
set ke YES
, saya hanya akan melihat bagian subview yang sesuai dengan batas superview. Jika tidak, jika clipsToBounds
disetel ke NO
, saya akan melihat seluruh subview, bahkan bagian di luar superview (dengan asumsi kita masih di layar).
Sebagai contoh visual, pertimbangkan tampilan berikut yang dipasang di papan cerita:
Ini berwarna putih UIView
, label di sudut kiri atas dengan "1" atau "2" sederhana sehingga saya dapat membahasnya sebagai view1
atau view2
. Selain itu, tampilan hitam berukuran sama dengan tampilan putih, tetapi asalnya ada di tengah tampilan putih.
Dalam metode pengontrol tampilan viewDidLoad
, kami memiliki kode berikut:
Objective-C:
- (void)viewDidLoad {
[super viewDidLoad];
self.view1.clipsToBounds = YES;
self.view2.clipsToBounds = NO;
}
Cepat:
override func viewDidLoad() {
super.viewDidLoad()
self.view1.clipsToBounds = true
self.view2.clipsToBounds = false
}
Saat kami menjalankan kode dan melihat di simulator atau di perangkat, kami mendapatkan hasil sebagai berikut:
Jadi, meskipun tampilan ini disiapkan secara identik (kecuali clipsToBounds
), tampilannya berbeda. Inilah yang clipsToBounds
dilakukannya. Menyetelnya ke YES
akan memberikan hasil teratas, sementara menyetelnya ke NO
memberikan hasil terbawah.
Jika kita men-debug hierarki tampilan, kita dapat melihat lebih jelas bahwa kotak hitam keduanya benar-benar melampaui boarder tampilan putih, tetapi hanya tampilan 2 yang menunjukkan ini saat aplikasi benar-benar berjalan:
UITextView
bayangan tidak terlihat, jikaclipsToBounds
properti sama dengantrue
; ? Jika yafalse
, berfungsi dengan baikIni dimaksudkan sebagai jawaban cepat singkat vs. jawaban yang diterima
Jika Apple untuk mengubah nama properti ini, saya akan nama itu:
clipSubviewsToBounds
.Saya baru saja menemukan bug di kode kami. Di mana ketinggian tampilan induk ditetapkan
0
. Kami berharap tidak melihat satu pun elemennya. Namun konten tampilan orang tua muncul.Itu karena
clipToBounds
tidak diatur ketrue
. Setelah itu disetel ketrue
ketinggian subview tidak bisa melampaui0
, jadi mereka tidak tampil sama sekali.sumber