webinar the room pro meetings meeting conference company ios swift imageview scrollview aspect-ratio

ios - the - ¿Cómo hacer un zoom fotográfico, ajustar la relación de aspecto y luego hacer zoom deja el área blanca en Swift?



zoom the cloud meeting company (1)

[Después del desplazamiento: Pantalla de problema blanco] 1

Después de usar el zoom

[Antes de la relación de aspecto ajustada de la imagen de Zoom]

Estoy implementando una página de vista de fotos, que incluye solo una foto. Funcionalidades: Zoom.

Como la imagen es de tamaño 1024x510. Implementé la relación de aspecto y configuré el marco de la vista de imagen en el tamaño de la pantalla. Implementé el uso de Scrollview y el concepto de vista de imagen.

El problema es que, cuando hago zoom en la imagen, la pantalla en blanco también se acerca. El problema es la vista de la imagen del espacio en blanco mientras se hace zoom. . Código

override func viewDidLoad() { super.viewDidLoad() print(imageIndex) self.scrollV.maximumZoomScale = 5.0 self.scrollV.minimumZoomScale = 1.0 self.scrollV.contentSize = self.view.bounds.size; self.scrollV.delegate = self let urlStr : NSString = vehicleImages[imageIndex].stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)! url=NSURL(string: urlStr as String) imageView.kf_setImageWithURL(url,placeholderImage: UIImage(named: "placeholder.png")) } func viewForZoomingInScrollView(scrollView: UIScrollView) -> UIView? { return imageView }


Eche un vistazo a estos métodos. Puede ser que ayude Tengo vista de desplazamiento extendida al tamaño de vista del controlador. customizeScrollView() calculará las opciones de escala mínima y máxima. centerImageView() colocará UIImageView en el centro de su UIScrollView

fileprivate func customizeScrollView() { guard let image = imageView?.image else { return } var minZoom = fmin(self.view.frame.width / image.size.width, self.view.frame.height / image.size.height) minZoom = fmin(1.0, minZoom) scrollView?.contentSize = image.size scrollView?.minimumZoomScale = minZoom scrollView?.addSubview(self.imageView!) scrollView?.setZoomScale(minZoom, animated: false) centerImageView() } fileprivate func centerImageView() { guard let imageView = imageView else { return } guard let scrollView = scrollView else { return } let boundsSize = scrollView.bounds.size var frameToCenter = imageView.frame // Center horizontally if frameToCenter.size.width < boundsSize.width { frameToCenter.origin.x = (boundsSize.width - frameToCenter.size.width) / 2 } else { frameToCenter.origin.x = 0 } // Center vertically if frameToCenter.size.height < boundsSize.height { frameToCenter.origin.y = (boundsSize.height - frameToCenter.size.height) / 2 } else { frameToCenter.origin.y = 0 } imageView.frame = frameToCenter }

También los métodos UIScrollViewDelegate:

/// `UIScrollViewDelegate` protocol implementation extension ImagePreviewController: UIScrollViewDelegate { public func viewForZooming(in scrollView: UIScrollView) -> UIView? { return imageView } public func scrollViewDidZoom(_ scrollView: UIScrollView) { centerImageView() } }