Ios 如何拍摄UIView的屏幕截图并使用背景模糊的UIView?

Ios 如何拍摄UIView的屏幕截图并使用背景模糊的UIView?,ios,objective-c,screenshot,blur,Ios,Objective C,Screenshot,Blur,我有一个视图控制器,它由一个容器视图组成,容器视图的屏幕大小是图像视图的一半,图像视图最初是隐藏的。容器嵌入了tableView。我有一个按钮,点击它会显示容器视图,第二次点击它会隐藏。 当容器视图打开时,背景视图应模糊。 对于那个模糊的视图,我想拍摄原始视图的截图,截图图像有背景,然后模糊它。 我试过这个 - (UIImage *) imageWithView:(UIView *)view { UIGraphicsBeginImageContextWithOptions(view.b

我有一个视图控制器,它由一个容器视图组成,容器视图的屏幕大小是图像视图的一半,图像视图最初是隐藏的。容器嵌入了tableView。我有一个按钮,点击它会显示容器视图,第二次点击它会隐藏。 当容器视图打开时,背景视图应模糊。 对于那个模糊的视图,我想拍摄原始视图的截图,截图图像有背景,然后模糊它。 我试过这个

- (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];
    }
}

创建自定义视图,然后拍摄屏幕截图并将其固定在该视图上,使您的视图背景模糊

截图代码:

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

你的错误是什么?为什么不添加一个更大的容器视图,并在表视图上方添加一个视图,并为该视图提供适当的alpha,以便使背景看起来模糊。不,容器视图类似于下拉列表,只有在点击按钮时才会显示。我能够拍摄屏幕截图。令我震惊的是,我无法模糊图像并将其作为背景视图使用此方法可以渲染具有模糊效果的图像。谢谢