【问题标题】:Drop a shadow to right and bottom of uiview在 uiview 的右侧和底部放置阴影
【发布时间】:2014-06-02 16:32:26
【问题描述】:

我必须在 uiview 的右侧和底部放置阴影。我在界面生成器中执行此操作。但我看到阴影掉到了它的顶部。尝试了不同的尺寸。但无法得到它。

layer.masksToBound=No
layer.shadowOpacity=0.15
layer.shadowRadius=2
layer.shadowOffSet={10,-10}   //Values being set in Interfacebuilder.

这仍然在顶部投下阴影。我应该怎么做才能到达视图底部。

【问题讨论】:

  • 对于运行时@walle84 是正确的答案。

标签: ios calayer shadow


【解决方案1】:

试试下面的代码,可能对你有帮助

    myView.layer.shadowColor = [UIColor purpleColor].CGColor;
    myView.layer.shadowOffset = CGSizeMake(5, 5);
    myView.layer.shadowOpacity = 1;
    myView.layer.shadowRadius = 1.0;
    myView.layer.maskToBounds = NO;

我测试了这段代码,它的工作和输出是:

【讨论】:

  • 你能告诉我如何只在视图的底部添加阴影。
  • 代替myView.layer.shadowOffset = CGSizeMake(5, 5);myView.layer.shadowOffset = CGSizeMake(0, 5);
  • inimageview 我无法添加此阴影。我已经像你写的那样编码了。
  • 嘿,我尝试设置我的 cgsizemake(0,n),但我一直在视图右侧出现阴影...知道这是为什么吗?
【解决方案2】:

我发现这些值给出了很好的结果:

myView.layer.shadowColor = UIColor.black.cgColor
myView.layer.shadowOpacity = 0.25
myView.layer.shadowRadius = 3
myView.layer.shadowOffset = CGSize(width: 1, height: 1) // shadow on the bottom right

【讨论】:

    【解决方案3】:

    Swift 3 中,CGSizeMake 不再存在。它已更改为CGSize(width: 20, height: 10)。所以shadowOffset可以在Swift 3中这样设置:

    myView.layer.shadowOffset = CGSize(width: 20, height: 10)
    

    【讨论】:

      【解决方案4】:

      您好,我使用了下面的代码,它会为您提供您想要的阴影。

       UIBezierPath *shadowPath = [UIBezierPath bezierPathWithRect:_viewShadow.bounds];
      _viewShadow.layer.masksToBounds = NO;
      _viewShadow.layer.shadowColor = [UIColor blackColor].CGColor;
      _viewShadow.layer.shadowOffset = CGSizeMake(10.0f, 5.0f);  /*Change value of X n Y as per your need of shadow to appear to like right bottom or left bottom or so on*/
      _viewShadow.layer.shadowOpacity = 0.5f;
      _viewShadow.layer.shadowPath = shadowPath.CGPath;
      

      maskToBounds 也是 imp,因为它禁止裁剪超出视图边界的子层。如果你把它设置为“是”,那么你将不会看到阴影,因为它会剪辑子层,而在“否”中它允许扩展层。

      【讨论】:

      • 感谢您对“masksToBounds”的说明,我错过了这个。
      【解决方案5】:

      我认为你的阴影偏移不正确。它应该是 { 10 , 10} 像:

      [layer setShadowOffset:CGSizeMake( 10 , 10 ) ];
      

      【讨论】:

      • 使用代码创建阴影。检查这个link
      • @GauravSingh 我用它为 tableview 单元格绘制阴影,但向上滚动后它会转到顶部。