如何防止UIScrollView中的内容超出范围并在缩放时与其他视图重叠?

时间:2019-10-07 09:13:53

标签: ios swift uiscrollview zoom

我有一个UIScrollView,其中包含一个普通的View(我称它为contentView),它又包含一个图像,以及图像顶部的其他一些内容。 UIScrollView不应占据整个屏幕,而应在其上方留出空间来容纳一些用户输入的内容。

问题是,缩放时,contentView变得大于UIScrollView,与相邻对象重叠,因此contentView现在占据了整个屏幕,而不仅仅是屏幕覆盖的部分。 UIScrollView。

我的UIScrollView包含在其上方具有内容的stackview中,并且具有保持恒定纵横比的约束。 contentView在ScrollView的顶部和前端具有约束,并且必须具有一定的大小,该大小与其包含的图像的大小相同。

我有以下功能,一个在ViewDidAppear上调用,另一个是苹果内置的可选功能(ViewDidZoom)。

func UpdateGraphScrollViewScale() {
    let widthscale = GraphScrollView.bounds.size.width / GraphScrollView.contentSize.width
    let heightscale = GraphScrollView.bounds.size.height / GraphScrollView.contentSize.height
    let minscale = min(widthscale, heightscale)

    GraphScrollView.minimumZoomScale = minscale
    GraphScrollView.zoomScale = minscale
    GraphScrollView.maximumZoomScale = 2.5
}

func scrollViewDidZoom(_ scrollView: UIScrollView) {
    GraphScrollView.contentSize = CGSize.init(width: ContentView.bounds.size.width * GraphScrollView.zoomScale, height: ContentView.bounds.size.height * GraphScrollView.zoomScale)
    GraphScrollView.isScrollEnabled = true
}

当视图超出范围时,很明显UIScrollView不会随ContentView一起展开,因为它只接受应该在滚动视图覆盖的区域内滚动和缩放手势。

0 个答案:

没有答案