iOS 中 ImageView 的阴影效果

Posted

技术标签:

【中文标题】iOS 中 ImageView 的阴影效果【英文标题】:Shadow effects on ImageView in iOS 【发布时间】:2014-12-01 06:07:14 【问题描述】:

我正在尝试为我的 Imageview 提供阴影效果,就像在这张图片中一样。

但我面临的问题是阴影实际上从 Imageview 的底部可见。

这是我添加阴影的代码。颜色和所有仍然与这个不匹配。

          CAGradientLayer *shadow = [CAGradientLayer layer];
          shadow.frame = CGRectMake(-100, 70, perspectiveView.frame.size.width, 
           perspectiveView.frame.size.height - 20);
          shadow.startPoint = CGPointMake(1.0, 0.5);
           shadow.endPoint = CGPointMake(0, 0.5);
           shadow.colors = [NSArray arrayWithObjects:(id)[[UIColor colorWithWhite:0.0 
           alpha:0.4f] CGColor], (id)[[UIColor clearColor] CGColor], nil];

          shadow.opacity = 1.0f;
          [perspectiveView.layer addSublayer:shadow];

请提供输入。此外,如果方法是错误的,请随时指导我采用任何其他方法。 提前致谢。

还有谁能建议如何提供一个 3D 边框,就像在图像中为图像视图提供轻微宽度一样?

【问题讨论】:

如果你能把你的图片的截图和阴影一起给我们看,那就太好了..容易理解.. 我无法在此处发布图片,因为我没有足够的声望点。所以请帮忙实现这个效果。 【参考方案1】:

也许,向图层添加阴影似乎可行。你可能想尝试这样的事情:

//  perspectiveView.transform = CGAffineTransformMakeRotation(-50.0f);   
    perspectiveView.layer.shadowOffset = CGSizeMake(10, 10);
    perspectiveView.layer.shadowRadius = 5.0;
    perspectiveView.layer.shadowOpacity = 0.6;

    perspectiveView.layer.masksToBounds = NO;

您需要使用这些值来满足您的要求。希望这可以帮助。

这是我的输出:

【讨论】:

如何让它从 imageView 的左侧和底部开始,并具有所需的 x-y 位置?此代码似乎确实有效,因此请指导我进行进一步的步骤。 我们如何去除阴影周围的白色? 阴影周围没有白色。只是不透明度级别使它如此。您可能需要增加不透明度以查看是否看起来不错。也许,perspectiveView.layer.shadowOpacity = 1.0; 好的精灵我会试试的 您能告诉我如何提供与图像中一样的 3D 边框吗?【参考方案2】:

试试这个,

- (void)setShadow 
    [perspectiveView.layer setShadowOffset:CGSizeMake(-5.0, 5.0)];
    [perspectiveView.layer setShadowRadius:5.0];
    [perspectiveView.layer setShadowOpacity:1.0];


【讨论】:

这个方法什么也没做。我不知道为什么,但它根本没有完成工作。【参考方案3】:

您可以使用CALayer class ,该图层可以管理您的视觉方面,如背景颜色、边框、阴影,您还可以管理它的几何内容,如大小、变换等。

视觉效果(阴影)

self.yourView.layer.shadowOffset = CGSizeMake(0, 3);
self.yourView.layer.shadowRadius = 5.0;
self.yourView.layer.shadowColor = [UIColor blackColor].CGColor;
self.yourView.layer.shadowOpacity = 1; 

你还把它用于self.yourView.layer.frame(Geometry)

更多信息https://developer.apple.com/library/ios/documentation/graphicsimaging/reference/CALayer_class/index.html

【讨论】:

【参考方案4】:

下面的代码工作我已经正确检查了。

但是Shikhar varshney你可以检查setShadow方法调用和perspectiveView不为零。

- (void)setShadow 
    perspectiveView.layer.shadowColor = [UIColor colorWithWhite:0.0 
       alpha:0.4f] CGColor;
    perspectiveView.layer.shadowOffset = CGSizeMake(0, 1);
    perspectiveView.layer.shadowOpacity = 1;
    perspectiveView.layer.shadowRadius = 1.0;
    perspectiveView.clipsToBounds = NO;

【讨论】:

以上是关于iOS 中 ImageView 的阴影效果的主要内容,如果未能解决你的问题,请参考以下文章

这种 ANDROID边界效果怎么做的.发光或者叫阴影

SwiftUI4.0在iOS 16中新添加的inner和drop阴影效果

SwiftUI4.0在iOS 16中新添加的inner和drop阴影效果

如何去除UITabBarIcon的阴影和光泽效果

android 给imageView,文字等加上阴影[记录]

UIBezierPath 阴影效果