iOS中对ImageView的阴影效果

时间:2014-12-01 06:07:14

标签: ios objective-c xcode uiimageview shadow

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

enter image description here

但我遇到的问题是阴影实际上是从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边框,就像在图像中提供略微宽度的图像视图一样吗?

4 个答案:

答案 0 :(得分:5)

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

//  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;

您需要使用这些值进行游戏以符合您的要求。希望这可以帮助。

这是我的输出:

enter image description here

答案 1 :(得分:3)

试试这个,

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

}

答案 2 :(得分:1)

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

视觉效果(阴影)

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(几何)

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

答案 3 :(得分:1)

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

Shikhar varshney 可以检查setShadow方法调用,而perspectiveView不是nil。

- (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;
}