2016-12-01 6 views
2

У меня есть контроллер вида, который состоит из вида контейнера, который является половиной размера экрана по сравнению с видом изображения, который изначально скрывается. контейнер встроен в tableView. У меня есть кнопка, которая по щелчку отображает представление контейнера, а при втором нажатии она скрывается. , когда вид контейнера открыт в фоновом режиме, должен быть размытым. Для этого размытия. Я хочу сделать снимок экрана с исходного места просмотра, на котором снимок экрана имеет фон и размытие. Я попытался этоКак сделать снимок экрана UIView и использовать его с размытым фоном?

- (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

Какая у вас ошибка? – jalone

+0

Почему бы вам не добавить более крупный вид контейнера и добавить представление над табличным представлением и дать соответствующую альфу этому виду, чтобы фон выглядел размытым. –

+0

Нет вида контейнера, как выпадающий список, он будет отображаться только при нажатии кнопки. – gowtham

ответ

0

сделать пользовательский вид, а затем сделать снимок экрана и закрепить его на этой точке зрения и сделать свой вид backgroound Blurr

ScreenShot Код:

- (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

Я могу сделать снимок экрана, который я ударил, я не смог размыть изображение и использовать его в качестве фонового изображения – gowtham