Попытка размыть UITableView за UIAlertController над UITableViewController

Я хочу размыть свой UITableView (внутри UITableViewController), когда я представляю UIAlertController (UIAlertControllerStyleActionSheet), но при использовании UIBlurEffect и UIVisualEffectView он не размывает содержимое табличного представления за ним; он просто блокирует это. Происходит как на симуляторе, так и на устройстве.

- (void)showAlert {
    UIBlurEffect *blurEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight];

    UIVisualEffectView *visualEffectView = [[UIVisualEffectView alloc] initWithEffect:blurEffect];
    visualEffectView.frame = CGRectMake(0, self.tableView.contentOffset.y, self.view.frame.size.width, self.view.frame.size.height);

    [self.view addSubview:visualEffectView];

    UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"Alert Title" message:@"Alert Message" preferredStyle:UIAlertControllerStyleActionSheet];

    [alert addAction:[UIAlertAction actionWithTitle:@"Action 1" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
        // handle choice...

        [visualEffectView removeFromSuperview];
    }]];

    [alert addAction:[UIAlertAction actionWithTitle:@"Action 2" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
        // handle choice...

        [visualEffectView removeFromSuperview];
    }]];

    [self presentViewController:alert animated:YES completion:nil];
}

Снимок экрана:

введите здесь описание изображения

В представлении таблицы за листом действий есть текстовое содержимое, которое должно отображаться как размытое, например. как на этом изображении:

введите здесь описание изображения


person shim    schedule 28.06.2016    source источник
comment
Можете ли вы попробовать visualEffectView.frame = self.view.bounds; ?   -  person HMHero    schedule 29.06.2016
comment
Пробовал это уже. Не имеет значения   -  person shim    schedule 29.06.2016
comment
Протестировал все, и кажется, что UIBlurEffect все равно не очень хорошо работает с текстом.   -  person shim    schedule 29.06.2016


Ответы (1)


Я попробовал на просмотре, и он отлично работает. Я сделал несколько изменений в вашем коде.

 - (void)showAlert {
    UIBlurEffect *blurEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleDark];

    UIVisualEffectView *visualEffectView = [[UIVisualEffectView alloc] initWithEffect:blurEffect];
    visualEffectView.frame = CGRectMake(0, self.view.frame.size.height/2, self.view.frame.size.width, self.view.frame.size.height);

    //self.vBlur.backgroundColor = [UIColor clearColor];
    [self.view addSubview:visualEffectView];

    UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"Alert Title" message:@"Alert Message" preferredStyle:UIAlertControllerStyleActionSheet];

    [alert addAction:[UIAlertAction actionWithTitle:@"Action 1" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
        // handle choice...

        [visualEffectView removeFromSuperview];
    }]];

    [alert addAction:[UIAlertAction actionWithTitle:@"Action 2" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
        // handle choice...

        [visualEffectView removeFromSuperview];
    }]];

    [self presentViewController:alert animated:YES completion:nil];
}

скриншот

другой скриншот?

person jiten    schedule 29.06.2016
comment
Ваш скриншот меня не устраивает. - person shim; 29.06.2016
comment
Зачем? Что не так? Хочешь на весь экран? - person jiten; 29.06.2016
comment
Вам это кажется размытым? Это просто сплошной темно-серый фон за листом действий. - person shim; 29.06.2016
comment
Если вы измените что-либо в перечислении uiblureffect, например UIBlurEffectStyleExtraLight, вы все равно не увидите полного эффекта размытия. - person jiten; 29.06.2016
comment
Здесь вообще не работает эффект размытия, независимо от выбора перечисления. Это солидный фон, как и у меня. - person shim; 29.06.2016
comment
@shim понял. Я только что изменил одну строку в своем коде, и он отлично работает. [self.vBlur addSubview:visualEffectView]; Я добавил экземпляр visualeffectview в представление. - person jiten; 29.06.2016
comment
Что такое self.vBlur? - person shim; 29.06.2016
comment
В главном представлении uiviewcontroller я добавил еще одно представление с именем vBlur, а затем добавил к нему визуальный эффект. Так что любые элементы управления, которые я добавил в основной вид, будут размыты. - person jiten; 29.06.2016
comment
Обновить скриншот? - person shim; 29.06.2016
comment
я добавил новый ответ с двумя скриншотами. посмотри. - person jiten; 29.06.2016
comment
Ни один из них не кажется мне размытым. И вы не должны добавлять отдельный ответ только со ссылками на изображения. - person shim; 29.06.2016