У меня есть UIViewController, который представляет другой UIViewController по модулю. Я хочу, чтобы контроллер модального представления имел размытие/прозрачность, введенное iOS 7. Я попытался использовать новый UIVisualEffect, но похоже, что работает только с UIViews, а не UIViewControllers?
Вот код, который я написал, все представления, которые я добавил в качестве подзонов, - это то, что я хочу быть в пользовательском интерфейсе над размытым видом под ним.
В представлении контроллера представления, я делаю скриншот экрана, который я передаю в контроллер модального представления, прежде чем применять размытие.
В представлении контроллера представления:
- (UIImage *)viewImage {
    CGSize size = CGSizeMake(self.view.frame.size.width,self.view.frame.size.height);
    UIGraphicsBeginImageContext(size);
    [self.view drawViewHierarchyInRect:(CGRect){CGPointZero, self.view.frame.size.width, self.view.frame.size.height} afterScreenUpdates:YES];
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return image;
}
В контроллере Modal View:
- (void)viewDidLoad {
    [super viewDidLoad];
    [self.view addSubview:[[UIImageView alloc] initWithImage:self.backgroundImage]];
    //self.backgroundImage is the image that the method above returns, it a screenshot of the presenting view controller.
    UIBlurEffect *blurEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight];
    UIVisualEffectView *blurEffectView = [[UIVisualEffectView alloc] initWithEffect:blurEffect];
    [blurEffectView setFrame:self.view.bounds];
    [self.view addSubview:blurEffectView];
    [self.view bringSubviewToFront:self.cancelButton];
    [self.view bringSubviewToFront:self.titleLabel];
    [self.view bringSubviewToFront:self.tableView];
}
