Какой самый эффективный способ добавить отражение в UIImageView - PullRequest
14 голосов
/ 13 января 2010

Мне просто нужен самый простой способ сделать отражение в UIImageVies, которым легко управлять.

Ответы [ 4 ]

20 голосов
/ 13 января 2010

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

Обновление : теперь ссылка обновлена ​​на новое местоположение

11 голосов
/ 13 января 2010

Как говорит Фил, у вас может быть "отраженный" экземпляр 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 голосов
/ 26 августа 2011

Я написал статью о том, как генерировать отражения любого элемента пользовательского интерфейса или группы элементов. Консервированная техника может быть добавлена ​​в ваш проект и очень проста в использовании. Исходный код и статью можно найти на http://aptogo.co.uk/2011/08/no-fuss-reflections/

0 голосов
/ 13 января 2010

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...