uiview阴影透明度问题

时间:2014-05-26 05:29:20

标签: ios iphone uiview uitextview

我有一个UITextView,其中包含"的影片"它下方tableView。我无法弄清楚的问题是如何制作" drophadow"透明,以便通过阴影可以看到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(superview)
  • UITextview(UIView的子视图)
  • UITableView(UIView的子视图)

应该能够透过阴影看到文字,以便更清洁。

enter image description here

5 个答案:

答案 0 :(得分:2)

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

  1. 我创建了一个名为shadow view的视图。
  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更改的影响。
  7. 我基本上使用.shouldRasterize属性在与父图层进行任何alpha混合之前渲染图层。

答案 1 :(得分:0)

尝试使用以下代码:

postDetails.layer.shadowColor = [UIColor colorWithWhite:.5 alpha:1].CGColor;
postDetails.layer. shadowOpacity = 1.0f;

答案 2 :(得分:0)

textView的阴影不会解决您的问题,因为它不会扩展到tableView的全长。您可以将透明视图放在tableView的顶部,而不是这样。在编辑期间添加具有背景透明背景颜色的临时视图,并在完成编辑后删除

self.overlayView.backgroundColor = [UIColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:0.5];

答案 3 :(得分:0)

只需设置

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

答案 4 :(得分:0)

我使用UIImageView来提供阴影。我创建了1像素宽,12像素高的图像。图像是黑色的,但是α是从顶部的0.5到底部的0.0的梯度。 RGBA 1.0,1.0,1.0,0.5 - > 1.0,1.0,1.0,0.0 - 然后我将UIImageView放置在需要阴影的视图下方,并在视图宽度上水平拉伸。 当我需要通过更改UIImageView.alpha值来滚动滚动视图时需要更改阴影的强度时,我也使用了这个