2015-07-01 10 views
12

Özel bir UIControl sahibiyim ve bunun bir gölge olmasını istiyorum, böylece ilgili özellikleri layer ürününe ayarladım. Görünümün etrafında bir gölge görünür, ancak bir alt görüntü olan bir UILabel metninin altında da bir gölge görünür. Bunu nasıl durdurursun? Sadece dış süper manzaradaki gölgeyi istiyorum.CALayer gölgesini alt gösterimleri etkilemekten mi vazgeçtin?

enter image description here

... 
init() {   
    label = UILabel() 
    label.translatesAutoresizingMaskIntoConstraints = false 
    self.translatesAutoresizingMaskIntoConstraints = false 
    addSubview(label) 

    self.layer.masksToBounds = false 
    self.layer.shadowColor = UIColor.blackColor().CGColor 
    self.layer.shadowOpacity = 1.0 
    self.layer.shadowRadius = 2.0 

    // Adding these lines trying to explicitly stop shadow on label... 
    label.layer.shadowOpacity = 0 
    label.layer.shadowColor = nil 
    ... 
} 
+0

Eğer self.layer gölge yapılandırmadan sonra label.layer sıfır gölge ayarlamak çalıştı mı? –

+0

Evet yaptım. Söz konusu kod için birkaç satır ekledim. –

cevap

45

üst görünüşüdür az 1.0'dan daha alfa sahiptir ya da hiç arka plan rengi olduğunda bu durumda (renk temizlemek için ayarlanmış yani). Bu durumda gölge alt görüntülere çevirir. Daha fazla bilgi için benim yanıtım here'a bakın.

Elma Docs

Bu ispat:

Şekil A-7 uygulanan kırmızı gölge ile aynı numune tabakası farklı sürümleri gösterir. Sol ve orta sürümler, arka plan rengini içerir, böylece gölge yalnızca katmanının sınırında görünür. Ancak, sağdaki sürüm arka plan rengini içermez. Bu durumda, bu katman katmanın içeriğine, kenarlığına ve alt katmanlarına uygulanır.

Shadow

+2

Yup, bu dış görünüm alfa <1.0 idi. –

+0

bunun neden olduğunu bulmak çok zordu. Çok teşekkürler!!! –