繁体   English   中英

uiview下拉阴影透明度问题

[英]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;

编辑:我认为也是导致该问题的是布局。 它是:

  • UIView(超级视图)
  • UITextview(UIView的子视图)
  • UITableView(UIView的子视图)

文本应该能够从阴影中看到,以使外观更清晰。

在此处输入图片说明

我能够做到这一点的方法是通过.shouldRasterize属性。

  1. 我创建一个称为阴影视图的视图。
  2. 确保它以任何方式透明。
  3. 在代码中配置阴影:

     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; 
  4. 现在我们可以使阴影视图透明!

     _viewShadow.alpha = 0.8f; 
  5. 此时,您应该看到一个透明视图,其中投影仅显示在图像边界之外。

  6. 最后,我们将内容显示在阴影视图的顶部 ,因此不会受到Alpha更改的影响。

在对父层进行任何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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM