Добавление UIVisualEffectView в фоновое представление UITableView работает только на симуляторе, а не на устройстве

У меня UITableView с UIImageView в качестве backgroundView. Это работает как шарм. Однако теперь я пытаюсь размыть это изображение (используя UIVisualEffectView), чтобы фон tableView выглядел размытым. Однако мой код каким-то образом игнорирует изображение и просто размывает белый фон представления таблицы. Вот код:

UIImageView *tempImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"sidebarImage"]];
UIBlurEffect *blurEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight];
UIVisualEffectView *blurEffectView = [[UIVisualEffectView alloc] initWithEffect:blurEffect];
[blurEffectView setFrame:tempImageView.bounds];
[tempImageView addSubview:blurEffectView];
self.tableView.backgroundView = tempImageView;

РЕДАКТИРОВАТЬ: После еще нескольких тестов я обнаружил, что это работает на симуляторе, но не на реальном устройстве. Ниже я приложил скриншоты колодца. Еще более удивительно то, что когда я комментирую [tempImageView addSubview:blurEffectView]; появляется изображение. Это означает, что изображение копируется на телефон.

Физический телефон

Симулятор


person Sid    schedule 01.07.2015    source источник
comment
Извините, @Sid, я удалил свой ответ, конечно, я что-то ошибся. Если вы правильно видите на Sim, а не на устройстве, возможно ли, что изображение имеет другое имя? Устройства чувствительны к регистру, симуляторы - нет.   -  person Andrea    schedule 01.07.2015
comment
Нет проблем, Андреа, в этом случае документация была немного размытой, в отличие от моего фона :). Да, я проверил imageName. Фактически, я создал образец проекта только с UIView, и оказалось, что он там тоже не работает.   -  person Sid    schedule 01.07.2015
comment
Разобралась Андреа. Спасибо за помощь!   -  person Sid    schedule 01.07.2015


Ответы (3)


Это одна из самых глупых проблем, с которыми я столкнулся. Видимо, у меня в настройках iphone было включено "Уменьшение прозрачности". Отсюда проблема. Надеюсь, это поможет какой-нибудь другой бедняге, пытающейся сэкономить заряд батареи.

person Sid    schedule 01.07.2015

Вы можете определить, когда "Уменьшение прозрачности" включено в iOS 8+, используя:

if (UIAccessibilityIsReduceTransparencyEnabled()) {
   ...
}

В этом сообщении блога более подробно рассказывается о том, доступен ли UIVisualEffectView на устройстве.

person bendytree    schedule 15.10.2015

попробуй это

 UIImageView *tempImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"sidebarImage"]];
    UIBlurEffect *blurEffect;
    blurEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight];

    UIVisualEffectView * blurEffectView;
    blurEffectView = [[UIVisualEffectView alloc] initWithEffect:blurEffect];


    blurEffectView.frame = tempImageView.bounds;
    [tempImageView addSubview:blurEffectView];
    self.tableView.backgroundView = tempImageView;

посмотрите на это

person Sport    schedule 01.07.2015
comment
Нет, этот код, который вы опубликовали, функционально идентичен приведенному выше. Это не решает проблему - person Sid; 01.07.2015