Ios 在swift中缩放滚动视图中的UIImageView

Ios 在swift中缩放滚动视图中的UIImageView,ios,swift,uiimageview,Ios,Swift,Uiimageview,我在滚动视图中有一个ImageView。我能变焦。但每当我释放光标时,整个图像都会显示在屏幕上。我只想显示图像的缩放部分。这是我的密码 func centerScrollViewContents(){ let boundsSize = scrollView.bounds.size var contentsFrame = imageView.frame if contentsFrame.size.width < boundsSize.width{

我在滚动视图中有一个ImageView。我能变焦。但每当我释放光标时,整个图像都会显示在屏幕上。我只想显示图像的缩放部分。这是我的密码

  func centerScrollViewContents(){
    let boundsSize = scrollView.bounds.size
    var contentsFrame = imageView.frame

    if contentsFrame.size.width < boundsSize.width{
        contentsFrame.origin.x = (boundsSize.width - contentsFrame.size.width) / 2
    }else{
        contentsFrame.origin.x = 0
    }

    if contentsFrame.size.height < boundsSize.height {

        contentsFrame.origin.y = (boundsSize.height - contentsFrame.size.height) / 2
    }else{
        contentsFrame.origin.y = 0
    }

    imageView.frame = contentsFrame

}

func scrollViewDidZoom(scrollView: UIScrollView) {
    centerScrollViewContents()
}

func viewForZoomingInScrollView(scrollView: UIScrollView) -> UIView? {
    return imageView
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()

    // Dispose of any resources that can be recreated.
}
override func viewDidAppear(animated: Bool) {

    scrollView.delegate = self
    imageView.frame = CGRectMake(16, 16, scrollView.frame.size.width, scrollView.frame.size.height)
    imageView.contentMode = UIViewContentMode.ScaleToFill
    imageView.image = UIImage(named: imgstr)
    var imagee = UIImage(named: imgstr)
    let size = imagee?.size
    //imageView.contentMode  = UIViewContentMode.ScaleAspectFit
    imageView.userInteractionEnabled = true
    scrollView.addSubview(imageView)
    scrollView.contentSize = size!
    let scrollViewFrame = scrollView.frame
    let scaleWidth = scrollViewFrame.size.width / scrollView.contentSize.width
    let scaleHeight = scrollViewFrame.size.height / scrollView.contentSize.height
    let minScale = min(scaleHeight, scaleWidth)

    scrollView.minimumZoomScale = minScale
    scrollView.maximumZoomScale = 1
    scrollView.zoomScale = minScale

   centerScrollViewContents()


}
func中心滚动视图内容(){
让boundsSize=scrollView.bounds.size
var contentsFrame=imageView.frame
如果contentsFrame.size.widthUIView?{
返回图像视图
}
重写函数didReceiveMemoryWarning(){
超级。我收到了记忆警告()
//处置所有可以重新创建的资源。
}
覆盖功能视图显示(动画:Bool){
scrollView.delegate=self
imageView.frame=CGRectMake(16,16,scrollView.frame.size.width,scrollView.frame.size.height)
imageView.contentMode=UIViewContentMode.ScaleToFill
imageView.image=UIImage(名称:imgstr)
var imagee=UIImage(名称:imgstr)
让大小=图像?大小
//imageView.contentMode=UIViewContentMode.ScaleSpectFit
imageView.userInteractionEnabled=true
scrollView.addSubview(imageView)
scrollView.contentSize=大小!
让scrollViewFrame=scrollView.frame
设scaleWidth=scrollViewFrame.size.width/scrollView.contentSize.width
让scaleHeight=scrollViewFrame.size.height/scrollView.contentSize.height
设最小刻度=最小(刻度高度,刻度宽度)
scrollView.minimumZoomScale=minScale
scrollView.maximumZoomScale=1
scrollView.zoomScale=最小刻度
centerScrollViewContents()
}

我删除了
centerScrollViewContents()
,但得到了相同的结果

您是否尝试在
layoutSubView
中调用
centerScrollViewContents
?像下面的开源软件一样: