如何使照片缩放,设置宽高比,然后缩放在Swift中留下白色区域?

[滚动后:问题白屏] 1

缩放后

[缩放图像设置宽高比之前]

我正在实现一个照片查看页面,其中只包括一张照片。 function:缩放。

由于图像的大小为1024×510。 我已经实现了纵横比,并将imageview框架设置为屏幕尺寸。 我已经实现了使用Scrollview和imageview的概念。

问题是,当我放大图像白色屏幕也放大。 问题是缩放时的空白os imageview。 。 码

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 } 

看看这些方法。 可能会有帮助。 我有滚动视图拉伸到控制器的视图大小。 customizeScrollView()将计算最小和最大比例选项。 centerImageView()将把UIImageView放在你的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 } 

还有UIScrollViewDelegate方法:

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