? Solo quiero la manera más fácil de hacer un reflejo en un UIImageVies que sea fácilmente manejable.¿Cuál es la forma más eficiente de agregar un reflejo a un UIImageView
Respuesta
Como dice Phil, puede tener un "refleja" instancia UIImageView:
@interface ReflectedImageView : UIView
{
@private
UIImageView *_imageView;
UIImageView *_imageReflectionView;
}
@property (nonatomic, retain) UIImage *image;
@end
Y luego, en su implementación, algo como esto
@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
¡La manera más fácil es hacerlo a mano en Photoshop! (en serio, si eso es práctico simplemente haz eso).
De lo contrario, tendrá que hacer una copia invertida de la imagen (o al menos la mitad inferior) para colocar debajo de la real, superpuesta con un degradado de negro (suponiendo que el fondo es negro) con alfa = 1 para alpha = 0.
Si necesita ubicarlo sobre fondos arbitrarios es un poco más complejo ya que tendrá que aplicar el degradado de alfa = 0 a alfa = 1 a su imagen invertida. Cogí un código una vez para hacerlo; intentaré extraerlo más tarde cuando llegue a mi Mac, si nadie más ha encontrado algo antes.
Er, ¿cómo puede el OP hacer reflejos para las imágenes de otros usuarios? La idea es que su aplicación tenga los reflejos, como lo hace Cover Flow. – JBRWilkinson
usted está haciendo una gran cantidad de suposiciones allí, @JBRWilkinson – philsquared
Sólo tiene que utilizar el sample code in the the iPhone SDK library
actualización: Enlace ahora se actualiza a la nueva ubicación
Genial, eso no estaba allí la última vez que tuve que hacer esto :-) – philsquared
lo siento, pero la URL no es válida por ahora – Xiao
https://developer.apple. com/library/ios/# samplecode/Reflection/Introduction/Intro.html # // apple_ref/doc/uid/DTS40008063 – Krumelur
Escribí un artículo sobre cómo generar reflejos de cualquier elemento de la interfaz de usuario o grupo de elementos. La técnica enlatada puede soltarse en su proyecto y es realmente fácil de usar. El código fuente y el artículo se pueden encontrar en http://aptogo.co.uk/2011/08/no-fuss-reflections/
Me encantaría leer eso pero el enlace está roto :( –
- 1. ¿Cuál es la forma más eficiente de ordenar un NSSet?
- 2. WPF: ¿cuál es la forma más eficiente/rápida de agregar elementos a un ListView?
- 3. ¿Cuál es la forma más eficiente de agregar un std :: vector al final de otro?
- 4. Cuál es la forma más eficiente de llamar a un método cada 20 segundos
- 5. ¿Cuál es la forma más eficiente de preguntar a un MethodInfo cuántos parámetros se necesitan?
- 6. ¿Cuál es la forma más eficiente de crear ListBuffer vacío?
- 7. ¿Cuál es la forma más eficiente de copiar de forma masiva a SQL Server desde Java?
- 8. ¿La forma más eficiente de agregar matrices en C#?
- 9. ¿Cómo puedo agregar programáticamente un UIImage a un UIImageView y agregar ese UIImageView a otro UIView?
- 10. ¿Cuál es la forma más eficiente de crear un sistema de bombilla de foro (no leída)?
- 11. ¿Cuál es la forma más fácil de agregar comas a un número entero?
- 12. ¿Cuál es la forma más eficiente de crear un sistema de permisos?
- 13. ¿Cuál es la forma más eficiente de mover/cambiar el nombre de un nodo en NetworkX?
- 14. ¿Cuál es la forma más eficiente de generar las combinaciones de un conjunto en python?
- 15. ¿Cuál es la forma más eficiente de obtener un arenero limpio de git?
- 16. ¿Cuál es la forma más eficiente de administrar un gran conjunto de líneas en OpenGL?
- 17. ¿Cuál es la forma más eficiente de atravesar un árbol en Python?
- 18. ¿Cuál es la forma más eficiente de encontrar qué usuarios prefieren un tweet específico?
- 19. ¿Cuál es la forma más eficiente de vaciar un elemento con jQuery
- 20. MongoDB: ¿Cuál es la forma más eficiente de consultar un único documento aleatorio?
- 21. ¿Cuál es la forma más eficiente de copiar en profundidad un objeto en Ruby?
- 22. ¿Cuál es la forma más eficiente de truncar un número para una precisión específica?
- 23. Inicializando ... ¿cuál es más eficiente?
- 24. ¿Cuál es la forma más eficiente de agregar botones de redes sociales como "me gusta" y "+1" a su sitio?
- 25. ¿Cuál es una manera eficiente y elegante de agregar un solo elemento a un conjunto inmutable?
- 26. ¿Cuál es la expresión regular más eficiente?
- 27. ¿Cuál es la forma más eficiente de ordenar las estructuras de C++ a C#?
- 28. ¿Cuál es la forma más eficiente de iterar a través de una lista en python?
- 29. ¿Cuál es la forma más eficiente de la cremallera de dos lista anidada a un diccionario solo nivel
- 30. ¿Cuál es la forma más eficiente de mover datos de Hive a MongoDB?
¿Por qué cambias el alfa de la imagen reflejada, y luego solo devuelves una imagen? – Jaba
Cambio el alfa para crear una especie de efecto de reflexión "metálico" :) En cuanto a la obtención de propiedad, dado que ambas vistas de imagen reciben la misma imagen, devolver cualquiera de ellas es la misma, y elegí devolver la imagen _imageView, pero es una elección arbitraria. Gracias por seleccionar mi respuesta! –
Eso es la mayor parte del camino. Sin embargo, no incluye el efecto "fade". – philsquared