Применить 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.