Применить UIVibrancyEffect к UILabel в UITableViewCell

Мой виджет Центр уведомлений содержит UITableView и есть UILabel на UITableViewCell что я хотел бы "размыть" / применить UIVibrancyEffect к. Вот что я пробовал, но, кажется, вызывает исключение:

UIVisualEffectView *effectView = [[UIVisualEffectView alloc] initWithEffect:[UIVibrancyEffect notificationCenterVibrancyEffect]];
effectView.frame = cell.longStatusLabel.bounds;
__strong UILabel *longStatus = cell.longStatusLabel;
cell.longStatusLabel = effectView;
[effectView.contentView addSubview:longStatus];
[cell addSubview:effectView];

Когда я запускаю этот код, расширение моего Центра уведомлений говорит, что оно не может загружаться.

1 ответ

Решение

Я думаю, проблема в том, что вы устанавливаете метку, равную UIVisualEffectView, Попробуйте это вместо этого. Создать UILabel программно:

UIVisualEffectView *effectView = [[UIVisualEffectView alloc] initWithEffect:[UIVibrancyEffect notificationCenterVibrancyEffect]];
effectView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
UILabel *label = [[UILabel alloc] init];
label.text = @"my label";
label.textColor = [UIColor colorWithWhite:1.0 alpha:0.5f];
label.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
//...
[effectView.contentView addSubview:label];
[cell.contentView addSubview:effectView];

Вы также должны быть в состоянии сделать это в Интерфейсном Разработчике, используя Визуальные Эффектные Представления с эффектом Размытия и Вибрации, это не должно быть сделано программно.

Кроме того, попробуйте установить точку останова при отладке, если она не работает так, как вы ожидаете. Если он отказывается загружаться, попробуйте удалить расширение из Центра уведомлений и снова добавить его или выбрать другое устройство, если вы используете симулятор iOS.

Другие вопросы по тегам