[英]uiview drop shadow transparency issue
我有一個帶有“陰影”的UITextView
和一個位於它下面的tableView
。 我不知道的問題是如何使“陰影”透明,以便可以通過陰影看到下面的tableView
和細節(請參見下圖)。 我嘗試使用不透明度和半徑,但是它不起作用。
這是我創建陰影的代碼:
postDetails.layer.shadowColor = [[UIColor blackColor] CGColor];
postDetails.layer.shadowOffset = CGSizeMake(0.0f, 3.0f);
postDetails.layer.shadowRadius = 3.0f;
postDetails.layer.shadowOpacity = 0.3f;
postDetails.layer.masksToBounds = NO;
編輯:我認為也是導致該問題的是布局。 它是:
文本應該能夠從陰影中看到,以使外觀更清晰。
我能夠做到這一點的方法是通過.shouldRasterize屬性。
在代碼中配置陰影:
UIBezierPath *shadowPath = [UIBezierPath bezierPathWithRect:_viewShadow.bounds]; _viewShadow.layer.masksToBounds = NO; _viewShadow.layer.shadowColor = [UIColor blackColor].CGColor; _viewShadow.layer.shadowOffset = CGSizeMake(0.0f, 0.0f); _viewShadow.layer.shadowOpacity = 1.0f; _viewShadow.layer.shadowPath = shadowPath.CGPath; _viewShadow.layer.shouldRasterize = true;
現在我們可以使陰影視圖透明!
_viewShadow.alpha = 0.8f;
此時,您應該看到一個透明視圖,其中投影僅顯示在圖像邊界之外。
在對父層進行任何alpha混合之前,我基本上使用.shouldRasterize屬性來渲染該層。
嘗試使用以下代碼:
postDetails.layer.shadowColor = [UIColor colorWithWhite:.5 alpha:1].CGColor;
postDetails.layer. shadowOpacity = 1.0f;
由於textView的陰影不會擴展到tableView的全長,因此無法解決您的問題。 取而代之的是,您可以將透明視圖放在tableView的頂部。 在編輯期間添加具有背景透明背景色的臨時視圖,並在編輯完成后將其刪除
self.overlayView.backgroundColor = [UIColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:0.5];
剛設定
postDetails.layer.borderColor = [[UIColor grayColor] CGColor]; // set color as you want
postDetails.layer.shadowOpacity = 0.3f; // set Opacity as you want
postDetails.layer.shadowOffset = CGSizeMake(0.0, -1.0); // set it as you want
我使用UIImageView提供陰影。 我創建了一個圖像,寬1像素,高12像素。 圖像是黑色的,但是alpha是從頂部的0.5到底部的0.0的漸變。 RGBA 1.0,1.0,1.0,0.5-> 1.0,1.0,1.0,0.0-然后我將UIImageView放置在需要陰影的視圖的正下方,並在視圖的寬度上水平拉伸它。 當需要在下面的滾動視圖滾動時通過更改UIImageView.alpha值來更改陰影的強度時,也使用了此方法
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.