2012-01-28 18 views
35

¿Cómo determina la dimensión "mover y escalar la pantalla" su cropbox?Establecer las dimensiones de UIImagePickerController "mover y escalar" cropbox

Básicamente me gustaría establecer un ancho y una altura fijos para el "CropRect" y permitir al usuario mover y escalar su imagen para que quepa en ese cuadro como desee.

¿Alguien sabe cómo hacer esto? (O si es posible con el UIImagePickerController)

¡Gracias!

+0

¿Alguien puede tener la misma solución para swift? –

Respuesta

33

Desafortunadamente, no es posible con UIImagePickerController. La solución que recomiendo es desactivar la edición del selector de imágenes y manejarlo usted mismo. Por ejemplo, puse la imagen en una vista de imagen desplazable y con zoom. En la parte superior de la vista de imagen hay una "vista de guía de cultivo" de posición fija que dibuja el indicador de recorte que ve el usuario. Suponiendo que la vista de guía tiene propiedades para la rect visible (la parte que se debe mantener) y los anchos de los bordes (la parte para descartar) puede obtener el rectángulo de recorte de esa manera. Puede usar la categoría UIImage+Resize para realizar el recorte real.

CGRect cropGuide = self.cropGuideView.visibleRect; 
UIEdgeInsets edges = self.cropGuideView.edgeWidths; 
CGPoint cropGuideOffset = self.cropScrollView.contentOffset; 

CGPoint origin = CGPointMake(cropGuideOffset.x + edges.left, cropGuideOffset.y + edges.top); 
CGSize size = cropGuide.size; 
CGRect crop = { origin, size }; 

crop.origin.x = crop.origin.x/self.cropScrollView.zoomScale; 
crop.origin.y = crop.origin.y/self.cropScrollView.zoomScale; 
crop.size.width = crop.size.width/self.cropScrollView.zoomScale; 
crop.size.height = crop.size.height/self.cropScrollView.zoomScale; 

photo = [photo croppedImage:crop]; 
+0

Respuesta perfecta. ¡Gracias! –

+11

Puede proporcionar el proyecto de muestra o cualquier otra cosa, por favor. –

+0

@Marc. ¿Cómo puedes guiarme cómo realizar usando swift –

3

Aquí es una solución para el cultivo manual por parte de Yang Ming. https://github.com/myang-git/iOS-Image-Crop-View

Ofrece un marco rectangular, que el usuario puede deslizar o arrastrar para adaptarse a la parte requerida de la imagen en el rectángulo. Tenga en cuenta que esta solución hace el reverso de la pregunta: permite que el tamaño del rectángulo varíe, pero finalmente produce el resultado deseado.

Está codificado en Objective-C. Es posible que tenga que codificarlo en Swift o simplemente crear un encabezado de puente para conectar el código Objective-C con el código Swift.

+1

mejor que cualquier otra biblioteca que encuentre. –

Cuestiones relacionadas