2015-07-25 10 views
5

Im avendo problemi ad accedere al cursore Zoom che appare di default in un UIImagePickerController. Questo non sembra accessibile e devo nasconderlo perché sta spuntando sulla mia vista cameraOverlay nel mio UIImagePickerController. Qualcuno può dirmi come nascondere il dispositivo di scorrimento dello zoom che appare quando l'utente pizzica e "zooma"?Rimuovi il cursore Zoom in UIImagePickerController

Ecco ciò che il cursore appare come:

PS questa non è la mia macchina fotografica personalizzato. Questa è solo un'immagine del cursore che appare sul mio cameraOverlay

+0

Hai mai ricevuto una risposta? Lo vedo anche io ... – gbanfill

+0

No, non l'ho fatto, sfortunatamente ho finito per disabilitare completamente lo zoom, credo. – Chisx

+0

Ancora cercando di risolvere questo problema. @ chrisx come hai disattivato completamente lo zoom? hai uno snippet di codice che posso guardare? – gbanfill

risposta

1

Recentemente mi sono imbattuto in questo problema grazie a iOS 10.0. Dopo aver trascorso molto tempo googling e non venire con tutto ciò che ha funzionato - mi si avvicinò con la mia soluzione:

myVC.PresentViewController (_imagePicker, false,()=>_imagePicker.View.Subviews[0].Subviews[0].Subviews[0].Subviews[0].Subviews[1].RemoveFromSuperview(); 

In sostanza una volta la vista selettore è stato presentato - "_imagePicker.View.Subviews [0] .Subviews [ 0] .Subviews [0] .Subviews [0] .Subviews 1 .RemoveFromSuperview(); " verrà eseguito per rimuovere la vista del cursore dalla fotocamera.

È probabile che si verifichi un futuro aggiornamento iOS, quindi non lo consiglio per le app di produzione. Se stai facendo un sacco di materiale fotografico personalizzato, è consigliabile utilizzare il framework AVFoundation.

Qualcuno dovrebbe sollevare un bug con Apple che in iOS 10 "imagePicker.ShowsCameraControls = NO;" in realtà non rimuove TUTTI i controlli della fotocamera.

Se hai bisogno di capire come fare qualcosa di simile in futuro puoi usare: il pulsante "Debug View Hierarchy" in Xcode per visualizzare viewHierachy e quindi fare clic sul componente che vuoi rimuovere/indovinare cercando i nomi di visualizzazione:

Example hierarchy path

In questo caso, l'opinione che ho voluto per rimuovere è stato il "CAMViewfinderView". Spero che questo ti aiuti!

Nota, il mio codice è stato scritto in CSharp (Xamarin.IOS) ma la stessa cosa funzionerà in ogg-c - solo una sintassi leggermente diversa.

-Rufus

+0

Ho lo stesso problema qui, l'hai risolto? –

+0

Sì, puoi vederlo nel blocco di codice che ho postato (ho appena aggiornato la formattazione in modo che sia più visibile). –

0

immagino trovato la migliore risposta a questo problema: Il cursore dello zoom è un UISlider, se la proprietà di visualizzazione della tua imagePickerController contiene un UISlider verso il basso le sue subviews, è possibile impostare la sua alfa a zero. Questo problema si verifica se si esegue l'aggiornamento a iOS10.

func subviews(_ view: UIView) -> [UIView] { 
    return view.subviews + view.subviews.flatMap { subviews($0) } 
} 

let myViews = subviews(imagePickerController.view) 
for view in myViews { 
    if view is UISlider { 
     view.alpha = 0.0 
    } 
} 

Spero che questo aiuti.

0

Ho trovato che disabiliterà la funzione di zoom.

imagePicker.view.isUserInteractionEnabled = false 

Quanto sopra interrompe l'interazione dell'utente per la telecamera.

Ecco cosa ha funzionato per me finalmente.

Aggiungi la cameraOverlay come sottoview al selettore.

if let overlay = overlayViewController?.view { 
      imagePicker.view.addSubview(overlay) 
     } 
Problemi correlati