2

UIViewに影を追加します。

[blurView.layer setCornerRadius:kCornerRadius];    
blurView.layer.masksToBounds = NO;
blurView.layer.shadowColor = [[UIColor redColor] CGColor];
blurView.layer.backgroundColor = blurView.layer.shadowColor;
blurView.layer.shadowPath = [UIBezierPath
                             bezierPathWithRoundedRect:CGRectMake(-2.0*kCornerRadius, -2.0*kCornerRadius, blurView.bounds.size.width+4.0*kCornerRadius, blurView.bounds.size.height+4.0*kCornerRadius)
                             cornerRadius:kCornerRadius].CGPath;
blurView.layer.cornerRadius = kCornerRadius;
blurView.layer.shadowOffset = CGSizeMake(0.0, 0.0);
blurView.layer.shadowRadius = kCornerRadius;
blurView.layer.shadowOpacity = kOpacity;
blurView.layer.opacity = 1.0;

コードのこの部分は、uiviewがぼやけているように、このビューを提供します。

ここに画像の説明を入力してください

BlurView.layerの不透明度を(たとえば0.5に)変更しようとすると、予期しないビューが表示されます。

ここに画像の説明を入力してください

ご覧のとおり、uiviewの鋭いエッジが得られます。

影の不透明度はレイヤーの不透明度の一部だと思います。これがこの「エラー」の原因です。誰かが私がこれを修正するのを手伝ってもらえますか?BlurView.layerなどの不透明度を変更する前にレイヤーをマージできますか?

UPD

この修正により:blurView.layer.shadowColor = [[UIColor colorWithRed:1 green:0 blue:0 alpha:0.5] CGColor];

私はこれを手に入れます:

ここに画像の説明を入力してください

UPD

答えはsetShouldRasterizeメソッドを使用しています:

ここに画像の説明を入力してください

みんなありがとう!

[blurView.layer setShouldRasterize:YES];
4

3 に答える 3

3

答えは、次のコード行を使用することです。

blurView.layer.shouldRasterize = YES;
于 2011-07-12T07:12:46.067 に答える
0

たぶんあなたはこれを入れてみることができますか?

blurView.layer.shadowColor = [[UIColor colorWithRed:1 green:0 blue:0 alpha:0.5] CGColor];
于 2011-07-11T15:35:40.220 に答える
0

これを置くとどうなりますか:

blurView.layer.shadowOpacity = 1.0;
blurView.layer.opacity = 0.5;

シャドウの不透明度を0.5に設定してから、レイヤー全体を0.5に設定して、シャドウを2倍透明にすると思いますか?

(または私は完全に間違っています!)

于 2011-07-11T16:06:25.363 に答える