Je veux juste le moyen le plus facile de faire une réflexion sous un UIImageVies qui est facilement gérable.Quel est le moyen le plus efficace d'ajouter une réflexion à un UIImageView
Répondre
Comme le dit Phil, vous pouvez avoir un "réfléchi" par exemple UIImageView:
@interface ReflectedImageView : UIView
{
@private
UIImageView *_imageView;
UIImageView *_imageReflectionView;
}
@property (nonatomic, retain) UIImage *image;
@end
Et puis, dans votre implémentation, quelque chose comme ça
@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
Le plus simple est de le faire à la main dans Photoshop! (sérieusement - si c'est pratique fais juste ça).
Sinon, vous devrez faire une copie inversée de l'image (ou au moins la moitié inférieure) pour placer sous la vraie, recouverte d'un dégradé de noir (en supposant que votre arrière-plan est noir) avec alpha = 1 à alpha = 0.
Si vous devez le placer sur des arrière-plans arbitraires, c'est un peu plus complexe car vous devrez appliquer le dégradé de alpha = 0 à alpha = 1 à votre image inversée. J'ai fait du code une fois pour le faire - j'essaierai de l'extraire plus tard quand j'arriverai sur mon Mac, si personne d'autre n'a trouvé quelque chose plus tôt.
Er, comment le PO peut faire des réflexions pour les images d'autres utilisateurs? L'idée est que son application a les réflexions, comme le fait Cover Flow. – JBRWilkinson
vous faites beaucoup de suppositions là, @JBRWilkinson – philsquared
Il suffit d'utiliser la sample code in the the iPhone SDK library
Mise à jour: Lien maintenant mis à jour vers un nouvel emplacement
Cool, ce n'était pas là la dernière fois que je devais faire ceci :-) – philsquared
désolé, mais l'URL n'est pas valide maintenant – Xiao
https://developer.apple. com/bibliothèque/ios/# samplecode/Réflexion/Introduction/Intro.html #// apple_ref/doc/uid/DTS40008063 – Krumelur
J'ai écrit un article sur la façon de générer des réflexions d'un élément de l'interface utilisateur ou d'un groupe d'éléments. La technique en conserve peut être lâchée dans votre projet et est vraiment facile à utiliser. Le code source et l'article peuvent être trouvés à http://aptogo.co.uk/2011/08/no-fuss-reflections/
J'aimerais lire ça mais le lien est cassé :( –
Pourquoi changez-vous l'alpha de l'image réfléchie, puis ne renvoyez qu'une seule image? – Jaba
Je change l'alpha pour créer une sorte d'effet de reflet "métallique" :) Quant à la propriété getter, étant donné que les deux images reçoivent la même image, retourner l'une d'elles est la même, et j'ai choisi de retourner l'image _imageView, mais c'est un choix arbitraire. Merci d'avoir choisi ma réponse! –
C'est la plupart du temps là-bas. Cependant, il n'inclut pas l'effet "fondu". – philsquared