gpt4 book ai didi

ios - 无法更新 UIScrollView 的 zoomScale

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:56:39 25 4
gpt4 key购买 nike

如果 zoomScale == oldScale,我正在尝试将 newScale 分配给 UIScrollView 的 zoomScale,并且分配 zoomScale = newScale 不起作用。

这是我在 playground 中的测试代码。

import UIKit

let scrollView = UIScrollView()
let contentView = UIView()

scrollView.frame.size = CGSizeMake(200, 200)
contentView.frame.size = CGSizeMake(400, 400)

var zoomScale: CGFloat {
get { return scrollView.zoomScale }
set { scrollView.zoomScale = newValue }
}

var minimumZoomScale: CGFloat {
get { return scrollView.minimumZoomScale }
set { scrollView.minimumZoomScale = newValue }
}

func updateMinimumZoomScale(withScale newScale: CGFloat) {
let oldScale = minimumZoomScale
minimumZoomScale = newScale

if zoomScale == oldScale {
// zoomScale = 1, newScale = 0.1 //
zoomScale = newScale
zoomScale == newScale // false
}
}

updateMinimumZoomScale(withScale: 0.1)

这是结果的屏幕截图。

Screenshot of the playground result

在屏幕截图中,zoomScale == newScale 的结果在赋值 zoomScale = newScale 之后立即为 false

我真的不知道为什么会这样。

最佳答案

即使我在 playground 和实际项目中尝试了您的代码,但它似乎没有用。问题是您需要在设置缩放比例之前为 ScrollView 设置委托(delegate)。委托(delegate)是这样设置的

scrollView.delegate = self

当您尝试为 ScrollView 设置缩放比例时,调用 -viewForZoomingInScrollView 方法,如果您的委托(delegate)为 nil,则不会调用该方法。因此它不会设置缩放比例。您可以在 Xcode 项目中尝试相同的示例,在更改缩放比例之前设置委托(delegate),它会起作用。

关于ios - 无法更新 UIScrollView 的 zoomScale,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35130912/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com