2012-01-28 12 views
35

In che modo lo "schermo di spostamento e scala" determina le dimensioni per il suo riquadro di taglio?Imposta dimensioni per UIImagePickerController "sposta e ridimensiona" casella di ritaglio

Fondamentalmente vorrei impostare una larghezza e un'altezza fissa per "CropRect" e consentire all'utente di spostare e ridimensionare la sua immagine per adattarla a quella casella come desiderato.

Qualcuno sa come fare questo? (O se è addirittura possibile con UIImagePickerController)

Grazie!

+0

Qualcuno può avere la stessa soluzione per swift? –

risposta

33

Non possibile con UIImagePickerController sfortunatamente. La soluzione che consiglio è di disabilitare la modifica per il selettore di immagini e gestirla autonomamente. Ad esempio, ho inserito l'immagine in una vista ingrandibile e ingrandibile. Nella parte superiore della visualizzazione dell'immagine è presente una posizione fissa "visualizzazione guida di ritaglio" che disegna l'indicatore di ritaglio che l'utente vede. Supponendo che la vista guida abbia le proprietà per il rettangolo visibile (la parte da conservare) e le larghezze del bordo (la parte da scartare) è possibile ottenere il rettangolo di ritaglio in questo modo. È possibile utilizzare la categoria UIImage+Resize per eseguire il ritaglio effettivo.

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

Risposta perfetta. Grazie! –

+11

Potete per favore fornire il progetto di esempio o qualsiasi altra cosa per favore. –

+0

@Marc. Come puoi guidarmi come eseguire usando swift –

3

ecco una soluzione per il ritaglio manuale Ming Yang. https://github.com/myang-git/iOS-Image-Crop-View

Offre una cornice rettangolare, che l'utente può scorrere o trascinare per adattarsi alla porzione richiesta dell'immagine nel rettangolo. Si prega di notare che questa soluzione fa il contrario della domanda - lascia variare le dimensioni del rettangolo, ma alla fine porta il risultato desiderato.

È codificato in Objective-C. Potrebbe essere necessario codificarlo in Swift o semplicemente creare un'intestazione di bridging per connettere il codice Objective-C con il codice Swift.

+1

meglio di qualsiasi altra libreria che trovo. –

Problemi correlati