14

半透明の塗りつぶしとドロップ シャドウを持つ UIView があります。塗りつぶしが半透明なので、塗りつぶしの影が見えます。

- (id)init
{
    self = [super init];
    if (self) {
        self.backgroundColor = [UIColor colorWithWhite:1.0 alpha:0.8];
        self.layer.shadowColor = [UIColor blackColor].CGColor;
        self.layer.shadowOffset = CGSizeMake(0.0, 0.0);
        self.layer.shadowOpacity = 0.5;
        self.layer.shadowRadius = 2.0;
        self.layer.cornerRadius = 3.0;
    }
    return self;
}

私はこの振る舞いが好きではありません。塗りつぶしの不透明度 + 影の不透明度が 100% を超えているため、ビューの背後に何も見えません。影がボックスの境界線の外側にのみ描画される CSS のようにするにはどうすればよいですか?

.someStyle {
   background: white;
   opacity: 0.8;
   box-shadow: 0 0 1em rgba(0,0,0,0.5);
}
4

1 に答える 1

5

次のようなものを使用して、この望ましい効果を得ることができました。

...
someLayer.backgroundColor = [[UIColor greenColor] CGColor];
someLayer.shadowOpacity = 1.0;
someLayer.shadowOffset = CGSizeMake(10.0, 10.0);
someLayer.shadowColor = [[UIColor blackColor] CGColor];

someLayer.rasterizationScale = [[UIScreen mainScreen] scale];
someLayer.shouldRasterize = YES;
someLayer.opacity = 0.5;

[[self layer] addSublayer:someLayer];
于 2012-12-28T20:08:40.897 に答える