Что самый эффективный путь состоит в том, чтобы добавить отражение к UIImageView

Я просто хочу самый легкий способ сделать отражение под UIImageVies, который легко managable.

14
задан Adrian Kosmaczewski 2 July 2013 в 08:14
поделиться

3 ответа

Как Phil говорит, у вас может быть "отраженный" экземпляр 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
11
ответ дан 1 December 2019 в 09:12
поделиться

Просто используют пример кода в библиотека iPhone SDK

Обновление : Ссылка теперь обновляется к новому местоположению

20
ответ дан 1 December 2019 в 09:12
поделиться

Самый простой способ - сделать это вручную в Photoshop! (серьезно - если это практично - просто сделай это).

Иначе вам нужно будет сделать инвертированную копию изображения (или, по крайней мере, нижнюю половину), чтобы поместить его под реальное, наложив градиент из черного (предполагая, что ваш фон черный) с alpha=1 до alpha=0.

Если вам нужно поместить его на произвольный фон, то это немного сложнее, так как вам придется применить градиент из альфа = 0 к альфа = 1 к инвертированному изображению. Однажды я вырубил какой-то код, чтобы сделать это - попробую выкопать его позже, когда доберусь до своего Mac, если больше никто ничего не придумал раньше.

-3
ответ дан 1 December 2019 в 09:12
поделиться