2013-02-20 34 views
0

enter image description hereenter image description here如何在UIImageView上实现这种效果(圆角,内部发光)?

我有一个黑暗的背景,所以我非常想在第一图像上的斜角效果。

我试图重新创建这些效果在我的UIImageViews优化使用UITableViewCells内可变大小的图像,但我找不出一个完美的方式。

我还使用AFNetworking异步加载在细胞中的图像,使用包装的UIImageView + AFNetworking类,所以我加载图像进入细胞是这样的:

NSURL *originalURL = [NSURL URLWithString:@"url"]; 
[[cell _image] setImageWithURL:originalURL]; 

_image只是我的自定义表格单元格中的常规UIImageView

所以我的问题基本上是,你会如何做到这一点?

+0

使用CAlayers – 2013-02-20 08:29:00

回答

2

利用CALayers存在于QuartzCore框架中。

创建一个黑色背景和圆角的新图层。然后我们将图像作为subLayer添加到它。

CALayer *sublayer = [CALayer layer]; 
sublayer.backgroundColor = [UIColor blueColor].CGColor; 
sublayer.shadowOffset = CGSizeMake(0, 3); 
sublayer.shadowRadius = 5.0; 
sublayer.shadowColor = [UIColor blackColor].CGColor; 
sublayer.shadowOpacity = 0.8; 
sublayer.frame = CGRectMake(30, 30, 128, 192); 
sublayer.borderColor = [UIColor blackColor].CGColor; 
sublayer.borderWidth = 2.0; 
sublayer.cornerRadius = 10.0; 
[self.view.layer addSublayer:sublayer]; 

CALayer *imageLayer = [CALayer layer]; 
imageLayer.frame = sublayer.bounds; 
imageLayer.cornerRadius = 10.0; 
imageLayer.contents = (id) [UIImage imageNamed:@"myImage.png"].CGImage; 
imageLayer.masksToBounds = YES; 
[sublayer addSublayer:imageLayer]; 

为了提供发光效果,请使用此代码。

CABasicAnimation* animation1 = [CABasicAnimation animationWithKeyPath:@"opacity"]; 
[animation1 setDuration:1.0]; 
[animation1 setRepeatCount:INT_MAX]; 
[animation1 setFromValue:[NSNumber numberWithFloat:0.0]]; 
[animation1 setToValue:[NSNumber numberWithFloat:1.0]]; 
[subLayer addAnimation:animation1 forKey:nil];