Мне просто нужен самый простой способ сделать отражение под UIImageVies, которое легко управляется.
Каков наиболее эффективный способ добавления отражения в UIImageView
Ответ 1
Как говорит Фил, у вас может быть "отраженный" экземпляр UIImageView:
@interface ReflectedImageView : UIView
{
@private
UIImageView *_imageView;
UIImageView *_imageReflectionView;
}
@property (nonatomic, retain) UIImage *image;
@end
И затем, в вашей реализации, что-то вроде этого
@implementation ReflectedImageView
@dynamic image;
- (id)initWithFrame:(CGRect)frame
{
if (self = [super initWithFrame:frame])
{
self.backgroundColor = [UIColor clearColor];
// This should be the size of your image:
CGRect rect = CGRectMake(0.0, 0.0, 320.0, 290.0);
_imageReflectionView = [[UIImageView alloc] initWithFrame:rect];
_imageReflectionView.contentMode = UIViewContentModeScaleAspectFit;
_imageReflectionView.alpha = 0.4;
_imageReflectionView.transform = CGAffineTransformMake(1, 0, 0, -1, 0, 290.0);
[self addSubview:_imageReflectionView];
_imageView = [[UIImageView alloc] initWithFrame:rect];
_imageView.contentMode = UIViewContentModeScaleAspectFit;
[self addSubview:_imageView];
}
return self;
}
- (void)setImage:(UIImage *)newImage
{
_imageView.image = newImage;
_imageReflectionView.image = newImage;
}
- (UIImage *)image
{
return _imageView.image;
}
- (void)dealloc
{
[_imageView release];
[_imageReflectionView release];
[super dealloc];
}
@end
Ответ 2
Просто используйте образец кода в библиотеке iPhone SDK
Обновить: ссылка обновлена до нового местоположения
Ответ 3
Я написал статью о том, как создавать отражения любого элемента интерфейса или группы элементов. Консервированная техника может быть включена в ваш проект и очень проста в использовании. Исходный код и статью можно найти на http://aptogo.co.uk/2011/08/no-fuss-reflections/
Ответ 4
Самый простой способ - сделать это вручную в Photoshop! (серьезно - если это практично, просто сделайте это).
В противном случае вам нужно сделать инвертированную копию изображения (или, по крайней мере, нижнюю половину), чтобы разместить ниже реального, наложенного градиентом от черного (при условии, что ваш фон черный) с альфа-1 до альфа = 0.
Если вам нужно поместить его на произвольные фоны, это немного сложнее, так как вам придется применить градиент от альфа = 0 к альфа = 1 к вашему обращенному изображению. Однажды я выбил код, чтобы сделать это - попытаюсь выкопать его позже, когда я доберусь до своего Mac, если никто еще не придумает что-нибудь раньше.