【问题标题】:How can I add a drop shadow effect beneath image views on iOS?如何在 iOS 上的图像视图下方添加阴影效果?
【发布时间】:2016-11-03 08:34:12
【问题描述】:

我想在我的UIImageView 实例下方添加阴影效果,如下面的屏幕截图所示:

如何通过故事板或代码(Objective-C)实现这一目标?

【问题讨论】:

    标签: ios objective-c ipad storyboard


    【解决方案1】:
    //Drop Shadow
    [view.layer setShadowColor: [UIColor grayColor].CGColor];
    [view.layer setShadowOpacity:0.8];
    [view.layer setShadowRadius:3.0];
    [view.layer setShadowOffset:CGSizeMake(2.0, 2.0)];
    

    【讨论】:

      【解决方案2】:

      请尝试一次:-

      UIBezierPath *shadowPath = [UIBezierPath bezierPathWithRect:view.bounds];
      view.layer.masksToBounds = NO;
      view.layer.shadowColor = [UIColor blackColor].CGColor;
      view.layer.shadowOffset = CGSizeMake(0.0f, 5.0f);
      view.layer.shadowOpacity = 0.5f;
      view.layer.shadowPath = shadowPath.CGPath;
      

      解释:- 如上一步所示,使用 Core Animation 添加阴影时需要一些不同的属性。如果您不熟悉 Core Animation,请不要担心,只需尝试关注阴影代码,而不是视图上的 CALayer

      shadowOffset 是一个 CGSize,表示将阴影从路径偏移多远。

      shadowColor 是阴影的颜色。阴影颜色应该始终是不透明的,因为不透明度将由 shadowOpacity 属性设置。 shadowColor 属性是 CGColor 而不是 UIColor

      shadowRadius是阴影沿阴影路径的宽度

      shadowOpacity 确定阴影的不透明度。

      shadowPath 可能是最重要的属性。虽然可以在不指定路径的情况下绘制阴影,但出于性能原因,您应该始终指定一个。这条路径告诉 Core Animation 视图的不透明区域是什么,没有它,事情会严重变慢!它是一个CGPath,最容易使用UIBezierPath(仅限iOS)创建,如步骤2所示。

      http://nscookbook.com/2013/01/ios-programming-recipe-10-adding-a-shadow-to-uiview/中查看更多信息

      【讨论】:

      • 将阴影路径指定为视图边界不是一个好主意,除非图像填充视图。对于缩放以适应视图而不是填充视图的图像,您希望阴影从图像本身而不是边界视图中掉落。不指定阴影路径。
      【解决方案3】:

      那些不是光,而是阴影。您可以使用该图层为 UI 元素绘制阴影。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-12-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-20
        • 1970-01-01
        • 2016-04-30
        • 2011-07-18
        相关资源
        最近更新 更多