簡體   English   中英

你怎么只在UIView的外面展示陰影?

[英]How do you only show a shadow outside of the fill of a UIView?

我有一個半透明填充和陰影的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);
}

我能夠使用以下內容獲得此效果:

...
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];
self.layer.shadowOffset = CGSizeMake(0.0, 1.0); shadow only on the bottom
self.layer.shadowOffset = CGSizeMake(1.0, 0.0); shadow only on the right side
self.layer.shadowOffset = CGSizeMake(1.0, 1.0); shadow on the right and bottom sides.

陰影偏移正如它所說的那樣。 將其設置為0,0將導致無陰影(如果您的視圖不透明/半透明)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM