2010-01-13 4 views

Antwort

11

Als Phil sagt, können Sie haben eine "reflektiert" UIImageView Beispiel:

@interface ReflectedImageView : UIView 
{ 
@private 
    UIImageView *_imageView; 
    UIImageView *_imageReflectionView; 
} 

@property (nonatomic, retain) UIImage *image; 

@end 

Und dann, in Ihrer Implementierung, etwas wie dieses

@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

Warum ändern Sie das Alpha des reflektierten Bildes, dann nur ein Bild zurück? – Jaba

+0

Ich ändere das Alpha, um eine Art "metallischen" Reflektionseffekt zu erzeugen :) Da der Property-Getter beide Bildansichten das gleiche Bild erhält, ist die Rückgabe beider Bilder gleich, und ich entschied mich dafür, das Bild zurückzugeben _imageView, aber es ist eine willkürliche Wahl. Danke für die Auswahl meiner Antwort! –

+0

Das ist am meisten da. Es beinhaltet jedoch nicht den "Fade" -Effekt. – philsquared

-3

Der einfachste Weg ist, es manuell in Photoshop zu tun! (Ernsthaft - wenn das praktisch ist, mach das einfach).

Andernfalls müssen Sie eine Kopie des Bildes (oder mindestens der unteren Hälfte) unter dem echten kopieren, überlagert mit einem Farbverlauf von Schwarz (vorausgesetzt, Ihr Hintergrund ist schwarz) mit Alpha = 1 bis Alpha = 0.

Wenn Sie es über beliebige Hintergründe platzieren müssen, ist es etwas komplexer, da Sie den Gradienten von Alpha = 0 bis Alpha = 1 auf Ihr invertiertes Bild anwenden müssen. Ich habe mal einen Code hochgekriegt, um es zu tun - werde versuchen, es später auszugraben, wenn ich auf meinen Mac komme, wenn niemand sonst etwas früher herausgefunden hat.

+0

Äh, wie kann das OP Reflexionen für die Bilder anderer Benutzer machen? Die Idee ist, dass seine App die Reflexionen hat, wie Cover Flow tut. – JBRWilkinson

+0

Sie machen eine Menge Annahmen, @JBRWilkinson – philsquared

20

einfach die

sample code in the the iPhone SDK library verwenden

aktualisieren: Link jetzt an neuen Standort aktualisiert

+0

Cool, das war nicht das letzte Mal musste ich das tun :-) – philsquared

+1

Sorry, aber URL ist nicht gültig – Xiao

+0

https://developer.apple. com/library/ios/# Beispielcode/Reflektion/Einführung/Intro.html # // Apple_ref/doc/uid/DTS40008063 – Krumelur

2

Ich schrieb einen Artikel darüber, wie man Reflexionen eines beliebigen UI-Elements oder einer Gruppe von Elementen erzeugt. Die Dosen-Technik kann in Ihr Projekt eingefügt werden und ist wirklich einfach zu bedienen. Quellcode und Artikel finden Sie unter http://aptogo.co.uk/2011/08/no-fuss-reflections/

+0

Ich würde gerne lesen, aber der Link ist kaputt :( –

Verwandte Themen