1

以下のコードは、単純な場合は正常に機能します。

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:

ラベルは表示されますが、鮮やかな効果はありません。

ヘルプ!

4

1 に答える 1