Как я могу добавить эффект вибрации в подпредставление?

Код ниже отлично работает для простого:

UIVisualEffectView *blurView

Но когда я пытаюсь добавить к нему метку с эффектом вибрации, он разбивается на слезы и ошибки. :(

    UIBlurEffect * effect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight];

    _blurView = [[UIVisualEffectView alloc] initWithEffect:effect];
    _blurView.backgroundColor = [UIColor colorWithWhite:0.8 alpha:0.5];
    [self addSubview:_blurView];

    UIVisualEffectView * vibrancyView = [[UIVisualEffectView alloc] initWithEffect:effect];

    [_blurView.contentView addSubview:vibrancyView];

    _titleLabel = [[UILabel alloc] init];
    _titleLabel.font = [UIFont boldSystemFontOfSize:17.0];
    _titleLabel.textColor = [UIColor colorWithWhite:0.1 alpha:0.5];
    _titleLabel.text = @"TITLE";

    [vibrancyView.contentView addSubview:_titleLabel];

Метод пользовательского набора кадров:

#pragma mark -

- (void)setFrame:(CGRect)frame
{
    [super setFrame:frame];

    _blurView.frame = CGRectMake(0, 0, frame.size.width, frame.size.height);

    _titleLabel.frame = CGRectMake(16, 16, 200, 30);
}

Метка не отображается на экране, но появляется, если я добавляю ее как простое подпредставление в blurView.

[_blurView addSubview:_titleLabel];

Я использую код в методе инициализации, может ли это быть причиной проблемы?

- (instancetype)init
{
    self = [super init];

    if (self) {

        // Code...
    }

    return self;
}

Мне нужно, чтобы он был в методе инициализации, чтобы соответствовать тому, как я пишу код.

Источник

ИЗМЕНИТЬ 1:

VibrancyView также должен иметь свой набор фреймов.

vibrancyView.frame = CGRectMake(0, 0, _blurView.frame.size.width, _blurView.frame.size.height);

Оказывается, пример в источнике неполный.

РЕДАКТИРОВАТЬ 2:

Этикетка появляется, но она не имеет эффекта яркости.

Помогите!


person Vulkan    schedule 29.05.2015    source источник


Ответы (1)


Вам не хватает создания эффекта вибрации:

UIVibrancyEffect * vibrancyEffect = [UIVibrancyEffect effectForBlurEffect:effect];

Позже вы должны передать его в представление вибрации:

UIVisualEffectView * vibrancyView = [[UIVisualEffectView alloc] initWithEffect: vibrancyEffect];


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

person Andrea    schedule 29.05.2015