Xcode 使用Swift在UIScrollView中居中显示图像

Xcode 使用Swift在UIScrollView中居中显示图像,xcode,image,swift,uiscrollview,scrollview,Xcode,Image,Swift,Uiscrollview,Scrollview,我有一张很长的图片,我想用一个滚动视图显示从上到下滚动页面的所有内容 我的问题是图像都在页面右边,没有办法把它放在页面中间。相反,当我双击页面以缩放照片时,图像会出现在页面的中心,没有问题 只有当我进入该页面时,照片才出现错误,因为部分照片超出了页面,所以被剪切 我使用的是Swift和Autolayout(没有它我的应用程序无法工作),这是ScrollView的代码。 我希望你能帮助我 override func viewDidLoad() { super.viewDidLoad

我有一张很长的图片,我想用一个滚动视图显示从上到下滚动页面的所有内容

我的问题是图像都在页面右边,没有办法把它放在页面中间。相反,当我双击页面以缩放照片时,图像会出现在页面的中心,没有问题

只有当我进入该页面时,照片才出现错误,因为部分照片超出了页面,所以被剪切

我使用的是Swift和Autolayout(没有它我的应用程序无法工作),这是ScrollView的代码。 我希望你能帮助我

    override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

    navigationItem.title = nameString!

    imageView?.image = UIImage(named: imageName!)
    nameLabel?.text = nameString!

    // 1
    let image = UIImage(named: imageName!)!
    imageView = UIImageView(image: image)
    imageView.frame = CGRect(origin: CGPoint(x: 0, y: 0), size:image.size)
    scrollView.addSubview(imageView)

    // 2
    scrollView.contentSize = image.size

    // 3
    var doubleTapRecognizer = UITapGestureRecognizer(target: self, action: "scrollViewDoubleTapped:")
    doubleTapRecognizer.numberOfTapsRequired = 2
    doubleTapRecognizer.numberOfTouchesRequired = 1
    scrollView.addGestureRecognizer(doubleTapRecognizer)

    // 4
    let scrollViewFrame = scrollView.frame
    let scaleWidth = scrollViewFrame.size.width / scrollView.contentSize.width
    let scaleHeight = scrollViewFrame.size.height / scrollView.contentSize.height
    let minScale = min(scaleWidth, scaleHeight);
    scrollView.minimumZoomScale = minScale;

    // 5
    scrollView.maximumZoomScale = 1.0
    scrollView.zoomScale = minScale;

    // 6
    centerScrollViewContents()
}

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.0
    } else {
        contentsFrame.origin.x = 0.0
    }

    if contentsFrame.size.height < boundsSize.height {
        contentsFrame.origin.y = (boundsSize.height - contentsFrame.size.height) / 2.0
    } else {
        contentsFrame.origin.y = 0.0
    }

    imageView.frame = contentsFrame
}

func scrollViewDoubleTapped(recognizer: UITapGestureRecognizer) {
    // 1
    let pointInView = recognizer.locationInView(imageView)

    // 2
    var newZoomScale = scrollView.zoomScale * 1.5
    newZoomScale = min(newZoomScale, scrollView.maximumZoomScale)

    // 3
    let scrollViewSize = scrollView.bounds.size
    let w = scrollViewSize.width / newZoomScale
    let h = scrollViewSize.height / newZoomScale
    let x = pointInView.x - (w / 2.0)
    let y = pointInView.y - (h / 2.0)

    let rectToZoomTo = CGRectMake(x, y, w, h);

    // 4
    scrollView.zoomToRect(rectToZoomTo, animated: true)
}

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

func scrollViewDidZoom(scrollView: UIScrollView!) {
    centerScrollViewContents()
}
override func viewDidLoad(){
super.viewDidLoad()
//加载视图后,通常从nib执行任何其他设置。
navigationItem.title=名称字符串!
imageView?.image=UIImage(名称:imageName!)
名称标签?.text=名称字符串!
// 1
让image=UIImage(名为:imageName!)!
imageView=UIImageView(图像:图像)
imageView.frame=CGRect(原点:CGPoint(x:0,y:0),大小:image.size)
scrollView.addSubview(imageView)
// 2
scrollView.contentSize=image.size
// 3
var doubleTapRecognizer=UITapGestureRecognizer(目标:self,操作:“ScrollViewDoubletaped:”)
doubleTapRecognizer.numberOfTapsRequired=2
DoubleTapRecognitor.numberOfTouchesRequired=1
scrollView.addGestureRecognizer(doubleTapRecognizer)
// 4
让scrollViewFrame=scrollView.frame
设scaleWidth=scrollViewFrame.size.width/scrollView.contentSize.width
让scaleHeight=scrollViewFrame.size.height/scrollView.contentSize.height
设minScale=min(标度宽度、标度高度);
scrollView.minimumZoomScale=最小刻度;
// 5
scrollView.maximumZoomScale=1.0
scrollView.zoomScale=最小刻度;
// 6
centerScrollViewContents()
}
func centerScrollViewContents(){
让boundsSize=scrollView.bounds.size
var contentsFrame=imageView.frame
如果contentsFrame.size.widthUIView!{
返回图像视图
}
func scrollViewDidZoom(scrollView:UIScrollView!){
centerScrollViewContents()
}

问题在哪里?谢谢大家

解决了问题,只需取消选择大小类并删除启动屏幕大小