2010-01-13 70 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

相關問題