Quitar el control deslizante Zoom en UIImagePickerController

Tengo problemas para acceder al control deslizante Zoom que aparece de forma pnetworkingeterminada en un UIImagePickerController . Esto no parece accesible y debo ocultarlo porque está apareciendo en mi vista cameraOverlay en mi UIImagePickerController. ¿Alguien puede decirme cómo podría ocultar el control deslizante de zoom que aparece cuando el usuario pellizca y "amplía"?

Aquí es cómo se ve el control deslizante:

PD, esta no es mi camera personalizada. Esta es solo una image del control deslizante que está apareciendo sobre mi cameraOverlay

Recientemente me encontré con este problema gracias a iOS 10.0. Después de pasar mucho time buscando en Google y no encontrando nada que funcionara, se me ocurrió mi propia solución:

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

Esencialmente una vez que se ha presentado la vista del selector – "_imagePicker.View.Subviews [0] .Subviews [0] .Subviews [0] .Subviews [0] .Subviews 1 .RemoveFromSuperview ();" se ejecutará para eliminar la vista del slider de la camera.

Es probable que esto se rompa en una futura actualización de iOS, así que no lo recomiendo para aplicaciones de producción. Si está haciendo muchas cosas de camera personalizadas, es aconsejable que utilice el marco AVFoundation.

Alguien debería plantear un error con la manzana que en iOS 10 "imagePicker.ShowsCameraControls = NO;" en realidad no elimina TODOS los controles de la camera.

Si alguna vez necesita averiguar cómo hacer algo similar en el futuro, puede usar: el button "Depurar jerarquía de vista" en Xcode para ver la vista de Hierachy y luego hacer clic en el componente que desea eliminar / adivinar mirando los nombres de las vistas :

Ejemplo de ruta jerárquica

En este caso, la vista que quería eliminar era la "CAMViewfinderView". ¡Espero que esto ayude!

Tenga en count que mi código se escribió en CSharp (Xamarin.IOS) pero lo mismo funcionará en el objective-c, una syntax ligeramente diferente.

-Rufus

Supongo que encontré la mejor respuesta a este problema: el slider de zoom es un UISlider, si la propiedad de la vista de tu ImagePickerController contiene un UISlider por debajo de sus subvistas, puedes establecer su alfa a cero. Este problema ocurre si actualizas 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 } } 

Espero que esto ayude.

Descubrí que esto deshabilitaría la function de zoom.

 imagePicker.view.isUserInteractionEnabled = false 

Lo anterior elimina la interacción del usuario para la camera.

Esto es lo que funcionó para mí finalmente.

Agregue la reproducción de camera como subvista al selector.

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