0

我已经用纯自动布局构建了一个 uiscrollview,所以我不使用:

[scrollView setContentSize:CGMakeSize(contentWidth,contentHeight)];

问题是现在我需要获取 uiScrollView 的 contentSize.height,但是使用自动布局我得到 0。

当用户双击时,我需要获取 contentSize.height 以放大滚动视图。

我要使用的代码是这个: ZoomToPoint

你能帮我把这段代码和autoLayout一起使用吗?

非常感谢

4

2 回答 2

0

我没有足够的信息来知道为什么你得到 0,这似乎没有发生在我目前正在处理的应用程序中的任何一个滚动视图上。也许您的自动布局约束不太正确?Autolayout + UIScrollViews 不是一个非常简单的组合。我发现将所有视图放置在一个普通的UIView“容器”中并将放置在滚动视图中是最简单的。

但是你真的需要 contentSize.height 吗?对我来说,在缩小的双击时将比例加倍并在放大的双击时缩小到 100% 是有意义的:

func doubleTapReceived(recognizer: UITapGestureRecognizer) {
    if recognizer.state == .Ended {
        if photo.scrollView.zoomScale == 1.0 {
            let point = recognizer.locationOfTouch(0, inView: <one of your views>)
            <your scroll view>.zoomToPoint(point, withScale: 2.0, animated: true)
        } else {
            <your scroll view>.zoomToRect(photo.frame, animated: true)
        }
    }
}

不需要子类化。

是我的代码的类似部分。也许尝试克隆我的项目并构建它,看看它与你所拥有的有什么不同?您可以通过转到“照片”选项卡并点击收藏视图中的缩略图之一来访问该特定滚动视图。

于 2014-08-27T22:59:10.867 回答
0

如果你是子类化,你应该使用子类layoutSubviews中的方法,否则你可以使用方法来找到正确的滚动视图。UIScrollViewUIScrollViewviewDidLayoutSubviewsUIViewControllercontentSize

于 2014-08-27T21:00:49.057 回答