2013-02-20 1 views
0

enter image description hereenter image description hereКак я могу достичь этого эффекта (закругленные углы, внутреннее свечение) на моем UIImageViews?

У меня есть темный фон, так что я бы очень хотел, скошенный эффект на первом изображении.

Я пытаюсь воссоздать эти эффекты на моем UIImageViews, оптимизированном для использования внутри UITableViewCells на изображениях с изменяемым размером, но я не могу найти способ, который отлично работает.

Я также использую AFNetworking для асинхронной загрузки изображений в ячейках, используя упакованную категорию UIImageView + AFNetworking, поэтому я загружаю изображения в клетки, как это:

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

_image является просто обычный UIImageView в моей пользовательской ячейке таблицы.

Так что мой вопрос, в основном, как бы вы это сделать?

+0

Использовать CAlayers –

ответ

2

Воспользоваться CALayers присутствующее в QuartzCore рамках.

Создайте новый слой с черным фоном и закругленными углами. Затем мы добавляем изображение в качестве субслоя к нему.

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