Pregunta

Estoy teniendo problemas para hacer un re-considerable rectángulo de recorte de mis imágenes.Estoy tratando de lograr algo como esta imagen:

http://img192.imageshack.us/img192/8930/customcropbox.jpg

Bien, el único problema es que no tengo idea de por dónde empezar realmente.Necesito algunos consejos de cómo puedo lograr este efecto de recorte.¿Qué documentación debo leer?Núcleo de Gráficos o de Cuarzo 2d?Tanto?He sido de codificación para el iPhone, ya que es la fecha de lanzamiento, pero en realidad nunca he usado núcleo de gráficos y etc.Cualquier consejo o ayuda sería muy apreciada.Voy a tirar mi código hasta aquí, ya que el progreso para mostrar cómo se hace cuando me lograrlo.:-) Además, esta caja rectangular es movible a través de la pantalla en un UIImageView que sólo la hace más interesante.Gracias por la ayuda y espero lograr este objetivo.

¿Fue útil?

Solución

mi favorito pregunta que es exactamente el mismo.

Llegué tan lejos como el movimiento alrededor de mi recorte de la vista y tener que mostrar la parte de la imagen correctamente, pero el trato con el scrollview el zoom es un trabajo en progreso.actualmente tengo un imageview y la llanura UIView capas en el UIScrollview, entonces fuera de la scrollview y a un nivel superior es de mi costumbre de cultivo UIView.Me implementar los toques métodos para tratar con arrastrar a su alrededor, y también drawRect:

- (void)drawRect:(CGRect)rect {
    // Drawing code
    if( self.image == nil )
        return;

    CGPoint offset = scrollView.contentOffset;
    clipRect = CGRectOffset(self.frame, offset.x, offset.y);

    UIImage *croppedImage = [image croppedImage:clipRect];
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    [croppedImage drawAtPoint:CGPointMake(0, 0)];
}

Nota:mi recorte de vista NO es un descendiente de UIImageView, es sólo UIView con una referencia a la imagen de fondo desde el otro punto de vista.

"croppedImage" es una categoría en la UIImage y bastante simple:

@implementation UIImage (Resize)
- (UIImage *)croppedImage:(CGRect)bounds {
    CGImageRef imageRef = CGImageCreateWithImageInRect([self CGImage], bounds);
    UIImage *croppedImage = [UIImage imageWithCGImage:imageRef];
    CGImageRelease(imageRef);
    return croppedImage;
}
...
@end

He aplicado algunas de las UIScrollViewDelegate métodos y pasar a través de la actividad de desplazamiento para que yo pueda mantener mi recorte de la vista en modo de sincronización.El zoom es pasado a lo largo de demasiado, pero como se ha mencionado, no funciona como se desea sin embargo.

Otra Nota:Creo que no es necesario perder el tiempo de generación de una nueva UIImage con el área recortada cada vez como la misma debería ser posible con

CGImageRef imageRef = CGImageCreateWithImageInRect([yourImage CGImage], bounds);
and 
CGContextDrawImage(ctx, clipRect, imageRef);

Otros consejos

El cuarzo es el 'término de marketing' para el núcleo de gráficos, y ahí es donde debe empezar. Usted querrá utilizar un UIView (dibujo en -drawRect :), trampa de encargo completa y realizar un seguimiento de sus toques, y luego dibujar el resultado. Usted puede obtener la corriente Contexto Gráfico usando UIGraphicsGetCurrentContext (). Esto debería ser suficiente para que pueda empezar!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top