2015-08-30 26 views
9

UIVisualEffectView üzerinde saydam bir delik türü görünümü oluşturmaya çalışıyorum. here verilen çözümü takip ediyordum. here üzerinde çalıştığım örnek kodumu ekledim. Çerçevesi bulanık görünümün arkasındaki resim görünümünden alınmış şeffaf bir görünüm oluşturmaya çalışıyorum. Herkes bana burada yanlış olan şeyin ne olduğunu söyleyebilir mi?UIVisualEffect görünümünde saydam bir delik oluşturma

cevap

11

İstediğiniz maskeyi oluşturmak için UIBezierPath kullanabilirsiniz.

blurView.layer.mask = ({ 
    CGRect roundedRect = self.bounds; 
    roundedRect.origin.x = roundedRect.size.width/4.0f; 
    roundedRect.origin.y = roundedRect.size.height/4.0f; 
    roundedRect.size.width /= 2.0f; 
    roundedRect.size.height /= 2.0f; 

    CGFloat cornerRadius = roundedRect.size.height/2.0f; 

    UIBezierPath *path = [UIBezierPath bezierPathWithRect:self.bounds]; 
    UIBezierPath *croppedPath = [UIBezierPath bezierPathWithRoundedRect:roundedRect cornerRadius:cornerRadius]; 
    [path appendPath:croppedPath]; 
    [path setUsesEvenOddFillRule:YES]; 

    CAShapeLayer *mask = [CAShapeLayer layer]; 
    mask.path = path.CGPath; 
    mask.fillRule = kCAFillRuleEvenOdd; 
    mask; 
}); 
+0

Amazing! ÇALIŞIYOR bir cazibe gibi! – SaltyNuts

+0

Thankuuuuuuuuu;) – ishhhh

+0

Yalnızca yuvarlatılmış net görünümün nasıl ayarlanabileceği, kullanıcı etkileşiminin yalnızca o kısımda @ cnotethegr8 etkinleştirileceği anlamına gelir –