2016-03-09 12 views

risposta

1

Posso pensare a un modo per ottenere questo effetto. Ma quello di cui hai bisogno non è una maschera di sfocatura, devi usare una maschera di ritaglio.

1- presenta un controller di visualizzazione modale con una vista che contiene UIVisualEffectView nella parte posteriore e una vista scrollview/tableview/collection nella parte anteriore che è sfalsata di 40px (o comunque molto desiderata) dall'alto e dal basso. 2- Aggiungere una maschera alla vista di scorrimento con un'immagine in bianco e nero su misura per l'operazione, è possibile aggiungere la maschera utilizzando il seguente codice:

var maskImage = UIImage(name: "yourMask") 
var maskLayer = CALayer() 
maskLayer.frame = scrollView.bounds() 
maskLayer.contents = maskImage.CGImage 
scrollview.layer.mask = maskLayer 

3- In alternativa, è anche possibile utilizzare CAGradientLayer per raggiungere il stesso effetto (questo funzionerebbe meglio anche con il ridimensionamento). Esistono molte soluzioni sullo stack overflow su come creare un gradiente di livello, come questo: Create gradient image programmatically in iOS

Detto questo, non capisco perché la tua domanda non sia stata votata. Penso che sia una domanda perfettamente valida da fare.

Spero che questo aiuti!

2
if (!UIAccessibilityIsReduceTransparencyEnabled()) {   
     self.BlurView.backgroundColor = [UIColor clearColor]; 
     UIBlurEffect *blurEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight]; 
     UIVisualEffectView *blurEffectView = [[UIVisualEffectView alloc] initWithEffect:blurEffect]; 
     blurEffectView.frame = self.view.bounds; 
     [blurEffectView setAlpha:1.0]; 
     [self.BlurView addSubview:blurEffectView];   
    } 

Dove self.BlurView è tipo di UIView.

È possibile mantenere questo per la vista superiore e inferiore. E può regolare il telaio blurEffectView.frame in base alle dimensioni superiori e inferiori.

Spero che questo ti possa aiutare.

1
  1. Configurare UIImageView con l'immagine di sfondo.
  2. Aggiungere UIVisualEffectView sopra le righe:

    UIVisualEffectView * vs = [[UIVisualEffectView alloc] initWithEffect:[UIBlurEffect effectWithStyle:UIBlurEffectStyleDark]]; 
    vs.frame = self.view.bounds; 
    [self.view addSubview:vs]; 
    
  3. Aggiungi un UIView sopra le righe, e mettere il vostro UITableView (o altro) in questo.
  4. aggiungere questo codice:

    CAGradientLayer * layer = [CAGradientLayer layer]; 
    layer.frame = tableHolder.bounds; 
    layer.colors = [NSArray arrayWithObjects:(id)[UIColor blackColor].CGColor, (id)[UIColor clearColor].CGColor, (id)[UIColor clearColor].CGColor, nil]; 
    layer.locations = @[@0.90,@0.99,@1.0]; 
    layer.startPoint = CGPointMake(0.0, 1.0f); 
    layer.endPoint = CGPointMake(0.0f, 0.0f); 
    tableHolder.layer.mask = layer; 
    tableHolder.layer.masksToBounds = true; 
    [tableHolder.layer insertSublayer:layer atIndex:0]; 
    

Regolare le variabili per le proprie esigenze, dovrete modificare i percorsi.

Non stai "offuscando" le parti superiori e inferiori, ma mascherandole gradualmente tramite il livello di sfumatura.

Problemi correlati