2009-12-28 10 views
5

Tengo problemas para hacer un rectángulo de tamaño considerable para recortar mis imágenes. Estoy tratando de lograr algo te gusta esta foto:iPhone - ¿Cómo se hace un rectángulo redimensionable para recortar imágenes?

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

Pues bien, el único problema es que no tengo ni idea de por dónde empezar realmente. Necesito algunos consejos sobre cómo puedo lograr este efecto de recorte. ¿Qué documentación debo leer? ¿Core Graphics o Quartz 2d? ¿Ambos? He estado codificando para el iPhone desde su fecha de lanzamiento, pero nunca he usado gráficos centrales, etc. Cualquier ayuda o consejo sería muy apreciado. Lanzaré mi código aquí mientras progreso para mostrar cómo se hace cuando lo logro. :-) Además, esta caja rectangular se puede mover a través de la pantalla en un UIImageView que lo hace más interesante. Gracias por la ayuda y espero alcanzar este objetivo.

+0

Hola le puede ayudar a ciencia cierta acaba de tomar una mirada una vez: https://github.com/barrettj/BJImageCropper/network/members – RayofHope

+0

Hola, ¿obtuviste una solución para esto? Estoy enfrentando exactamente el mismo problema. – ScarletWitch

+1

Si desea hacer recortar como la imagen siguiente https://raw.github.com/yuyak/YKImageCropper/master/Example/screenshot.png , utilice este: https://github.com/yuyak/YKImageCropper – RayofHope

Respuesta

1

marcar mi question que es exactamente lo mismo.

Llegué a moverme alrededor de mi vista de recortar y hacer que muestre la parte de la imagen correctamente, pero ocuparme del zoom de desplazamiento es un trabajo en progreso. Actualmente tengo una vista de imagen y UIView simple en capas en UIScrollview, luego fuera de la vista de desplazamiento y en un nivel más alto está UIView mi recorte personalizado. Cómo implementar los métodos toques para hacer frente a lo arrastra 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 punto de vista de recorte no es un descendiente de UIImageView, es sólo UIView con una referencia a la imagen subyacente desde el otro punto de vista.

"croppedImage" es una categoría en 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 implementado algunos de los métodos UIScrollViewDelegate y pasar por la actividad de desplazamiento para que pueda mantener mi vista recorte en sincronía. También se pasa el zoom, pero como se mencionó, aún no funciona como se deseaba.

Otra Nota: no creo que es necesario perder el tiempo generando un nuevo UIImage con el área recortada cada vez que el mismo debe ser posible con

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

El cuarzo es el "término de comercialización" para Core Graphics, y es allí donde debería comenzar. Querrá usar un UIView (dibujo personalizado completo en -drawRect :), atrapar y rastrear sus toques, y luego dibujar el resultado. Puede obtener el contexto de gráficos actual usando UIGraphicsGetCurrentContext(). ¡Eso debería ser suficiente para que comiences!

+0

Suena bien, gracias por el impulso inicial. – 0SX

+0

realmente suena bien, ¿puede ayudar con el código de muestra para hacerlo – Marios

Cuestiones relacionadas