向UIImageView添加反射的最有效方法是什么

时间:2010-01-13 17:24:32

标签: iphone objective-c reflection uiimageview

我只想要在UIImageView下进行反射的最简单方法,该方法易于管理。

4 个答案:

答案 0 :(得分:20)

只需使用sample code in the the iPhone SDK library

即可

更新:链接现已更新为新位置

答案 1 :(得分:11)

正如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

答案 2 :(得分:2)

我写了一篇关于如何生成任何UI元素或元素组的反射的文章。罐装技术可以放入您的项目中,并且非常易于使用。可以在http://aptogo.co.uk/2011/08/no-fuss-reflections/

找到源代码和文章

答案 3 :(得分:-3)

最简单的方法是在Photoshop中手动完成! (严肃地说 - 如果那是可行的那样)。

否则你需要制作图像的反转副本(或者至少是下半部分)放置在真实的图像下面,用黑色渐变覆盖(假设你的背景为黑色),alpha = 1到alpha = 0。

如果你需要将它放在任意背景上,它会更复杂,因为你必须将alpha = 0到alpha = 1的渐变应用到你的倒像。 我敲了一些代码就做了 - 当我到达我的Mac时会尝试挖出来,如果没有其他人能早点拿到任何东西。