2016-12-01 3 views
2

Ich habe eine View-Controller, die aus einer Container-Ansicht, die die Hälfte der Bildschirmgröße über eine Bildansicht besteht, die zunächst ausgeblendet wird. Der Container ist in das TableView eingebettet. Ich habe eine Schaltfläche, die beim Klicken die Containeransicht anzeigt und beim zweiten Klick wird sie ausgeblendet. Wenn diese Containeransicht geöffnet ist, sollte die Hintergrundansicht verschwommen sein. Für diese Unschärfe-Ansicht Ich möchte einen Screenshot der ursprünglichen Ansicht Ort, dass Screenshot-Bild hat Hintergrund und verschwimmen das. Ich habe versucht, dieseWie man einen Screenshot von UIView macht und es benutzt, hat einen Hintergrund mit Unschärfen?

- (UIImage *) imageWithView:(UIView *)view 
{ 
    UIGraphicsBeginImageContextWithOptions(view.bounds.size, view.opaque,  [[UIScreen mainScreen] scale]); 
    [view.layer renderInContext:UIGraphicsGetCurrentContext()]; 
    UIImage * img = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    _imageView.image = [UIImage imageNamed:@"img"]; 
    return img; 
} 


- (IBAction)clickToBlur:(id)sender { 

    [self imageWithView:_imageView]; 
    _imageView.image = [UIImage imageNamed:@"img"]; 


    if (!UIAccessibilityIsReduceTransparencyEnabled()) { 
     self.view.backgroundColor = [UIColor clearColor]; 
     UIBlurEffect *blurEffect = [UIBlurEffect  effectWithStyle:UIBlurEffectStyleLight]; 
     UIVisualEffectView *blurEffectView = [[UIVisualEffectView alloc] initWithEffect:blurEffect ]; 
     blurEffectView.frame = self.view.bounds; 
     blurEffectView.backgroundColor = [[UIColor whiteColor]colorWithAlphaComponent:0.6]; 
     blurEffectView.frame = CGRectMake(0, 28, 375, 554); 
     blurEffectView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; 

     [self.view addSubview:blurEffectView]; 
    } else { 
     self.view.backgroundColor = [UIColor blackColor]; 
    } 
} 

enter image description here

+1

Was ist Ihr Fehler? – jalone

+0

Warum fügen Sie keine größere Containeransicht hinzu und fügen eine Ansicht über der Tabellenansicht hinzu und geben Sie dieser Ansicht das entsprechende Alpha, damit der Hintergrund unscharf erscheint. –

+0

Nein, die Containeransicht ist wie eine Dropdown-Liste. Sie wird nur angezeigt, wenn die Schaltfläche angetippt wird. – gowtham

Antwort

0

benutzerdefinierte Ansicht Stellen und dann einen Screenshot nehmen und fixieren Sie es auf dieser Ansicht und Ihrer Ansicht nach machen backgroound blurr

ScreenShot Code:

- (UIImage *) screenshot { 

    CGSize size = CGSizeMake(self.view.frame.size.width, self.view.frame.size.height); 

    UIGraphicsBeginImageContextWithOptions(size, NO, [UIScreen mainScreen].scale); 

    CGRect rec = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height); 
    [self.view drawViewHierarchyInRect:rec afterScreenUpdates:YES]; 

    image = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    return image; 
} 
+0

Ich bin in der Lage, Screenshot zu machen, ich bin aufgefallen, war ich nicht in der Lage, das Bild zu verwischen und es als Hintergrund verwenden – gowtham

Verwandte Themen