2014-11-06 60 views
8

'da oluşturulan NSView örneklerinin kırpılmasını kapatılamıyor Özel görünümüm, Arabirim Oluşturucu'da tanımlandığında alt görünümü/alt katman kırpmasını nasıl kapatacağımı anlayamıyorum. Görünümü programsal olarak oluşturduğumda ve StackOverflow üzerinde birçok soruda bulunan kurulumunu yaptığımda, bir görünüme eklenen alt görünümler ve alt katmanların view.layer öğesine eklenmesi gayet iyi. O şeyler şunlardır:Arabirim Oluşturucu

((NSView*)containingWindow.contentView).wantsLayer = YES; 
view.wantsLayer = YES; 
view.layer.masksToBounds = NO; 

bu (bu sırayla) bitirdikten sonra, her şey kodda oluşturulan görünümleri için harika çalışıyor. IB'de yaratılan görüşler için aynı şeyi (veya başka bir şey için) yaparsam, hiçbir yere varamam. Ben yöntemini tanımlayan bir özel NSView kullanarak denedi

:

- (CALayer*)makeBackingLayer { 
    CALayer* layer = [CALayer layer]; 
    layer.masksToBounds = NO; 

    return layer; 
} 

- (BOOL)wantsDefaultClipping { 
    return NO; 
} 

yardımcı olmuyor. IB'deki View Effects'te "Çekirdek Animasyon Katmanı" altındaki kutuyu da kontrol etmeye çalıştım. Bu da işe yaramadı. Son olarak, sadece sorumlu olduğu durumlarda, kısıtlamaları kapatmaya çalıştım. Ya da işe yaramadı.

Herhangi bir yardım için teşekkür ederiz. Fark ettiğim bir şey, "masksToBounds" destek katmanımın görüntülendiğimi, benim ayarladığım HAYIR'ı başlattığım, ancak daha sonra görünüm hiyerarşisini günlüğe kaydettiğimde, aynı görünümde (bellek adresinden doğrulanmış) EVET oldu.

+0

Buna bir cevap buldunuz mu? IB kullanmama rağmen benzer sorunlar yaşıyorum. –

cevap

-3

Dene:

myView.wantsDefaultClipping = NO; 

ve çocuk görünümleri için de yapalım.

+0

"wantsDefaultClipping" ayarlanacak bir özellik değil, yalnızca özel görünümde uygulanması gereken bir yöntem. Ve evet, bunu denedim. –

+0

@Eric ve çocuk görüşleri için denendi? – nicael

+0

Evet ve CALayer için eşdeğer bir şey (childLayer.maskstoBounds = NO;). Tek fark ana görünümün bir NIB'den mi oluşturulduğu veya kod içinde yapılıp yapılmadığıdır. –