以下のコードは、単純な場合は正常に機能します。
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:
ラベルは表示されますが、鮮やかな効果はありません。
ヘルプ!