2010-01-13 73 views

回答

11

菲尔说,你可以有一个 “反映” 的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 
+0

为什么你要改变反射图像的alpha,然后只返回一个图像? – Jaba 2010-01-13 18:26:37

+0

我改变alpha创建一种“金属”反射效果:)至于属性getter,假设两个图像视图都接收到相同的图像,返回其中一个是相同的,我选择从图像中返回图像_imageView,但它是一个任意的选择。感谢您选择我的答案! – 2010-01-13 18:30:00

+0

这就是那里的大部分。但是,它不包括“淡入淡出”效果。 – philsquared 2010-01-13 18:37:32

-3

最简单的方法是用手工在Photoshop做吧! (认真 - 如果这是可行的就是这样做)。

否则,您需要将图像的倒置副本(或至少下半部分)放置在真实的下方,用alpha = 1到黑色的渐变(假设您的背景为黑色)进行叠加阿尔法= 0。

如果你需要把它放在一个任意的背景这是一个有点复杂,因为你必须从阿尔法应用梯度= 0的α= 1到你的倒影。 我敲了一些代码,一旦做到这一点 - 将尝试和挖掘出来后,当我得到我的Mac上,如果别人没拿出任何东西越快。

+0

呃,OP如何对其他用户的图像进行反射?这个想法是,他的应用程序有像Cover Flow一样的反射。 – JBRWilkinson 2011-05-10 11:41:33

+0

你在那里做了很多假设,@JBRWilkinson – philsquared 2011-05-12 11:08:38

20

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

更新:链接现在已经更新到新的位置

+0

很酷,那上次我不得不这样做:-) – philsquared 2010-01-13 18:35:51

+1

对不起,但URL现在无效 – Xiao 2011-04-28 13:26:10

+0

https://developer.apple。 COM /库/ IOS /#samplecode /反射/简介/ Intro.html#// apple_ref/DOC/UID/DTS40008063 – Krumelur 2012-03-03 12:08:23

2

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

+0

我很想读,但链接已损坏:( – 2016-02-02 20:07:41

相关问题