Sono su un progetto che crea un numero personalizzato 'Move and Scale' Controller
di UIImagePickerController
. (controller quando appare se imagePickerController.allowsEditing=YES
)Come posso regolare dinamicadocumentiInset in scrollViewDidZoom? Inizialmente ho impostato contentInset di UIImageView in UIScrollview
Voglio crop an UIImage
nel ritaglio rettangolare come nella foto qui sotto.
E ho fatto un po 'di codice per impostare contentInset
.
self.selectedImageView.backgroundColor = [UIColor redColor];
CGRect cropRect = [SKPhotoCropFrameView getCropRectFromOrientation:self.photoCropOrientation];
CGRect aspectFitRect = AVMakeRectWithAspectRatioInsideRect(self.selectedImageView.image.size, self.selectedImageView.frame);
CGFloat difference = fabsf(cropRect.size.height - aspectFitRect.size.height);
self.contentInset = UIEdgeInsetsMake(difference/2, 0, difference/2 + 20, 0); // 20 is status bar height
ed ecco il risultato.
nera regione è zona contentInset.
Tuttavia, se pizzico questo scrollView per ingrandire, succede qualcosa.
penso che devo fare qualcosa sul
- (void)scrollViewDidZoom:(UIScrollView *)scrollView
per regolare contentInset dinamicamente. Come posso fare questo? Per favore, dammi un aiuto :)
Non proprio una risposta alla tua domanda, ma il tuo approccio è diverso da quello di Apple e questo è il problema. Non consentono lo scorrimento verso il basso quando l'immagine è completamente rimpicciolita, non puoi semplicemente ingrandire la parte superiore di un'immagine quando usi il gesto di pizzicare. Dovrai o modificare il tuo approccio a quello che Apple utilizza e limitare l'area di zoom o utilizzare alcuni elementi dell'interfaccia utente per eseguire lo zoom a livello di codice, in questo modo avrai il controllo completo sull'area che stai ingrandendo. – Eugene
@Eugene Grazie per il tuo commento. Penso che il mio approccio sia esattamente lo stesso di quello di Apple. Imomatico il UIImagePickerController di default. Voglio solo implementare il controller UIImagePickerController 'Move and Scale'. Vuoi spiegare perché questo è diverso da quello di Apple più sofisticato? –