ios - UIScrollView 在不同设备上快速运行时不滚动或部分滚动

标签 ios swift uiview uiscrollview

我已经使用 UIScrollView 创建了一个 View 。当我尝试向下滚动时,它在不同设备上的工作方式有所不同。我发现这是因为设备的屏幕尺寸不同。我使用 scrollView.contentSize = CGSizeMake(325,scrollView.frame.height) 来设置 ScrollView 高度。

当我试图找到问题的解决方案时,我遇到了这个

CGRect contentRect = CGRectZero;
for (UIView *view in self.scrollView.subviews) {
    contentRect = CGRectUnion(contentRect, view.frame);
}
self.scrollView.contentSize = contentRect.size

但这对我不起作用,因为我的 ScrollView 由许多 subview 、标签和不同尺寸、不同位置的按钮组成。我在 Storyboard上完成了所有 ScrollView 的设计,并且没有使用自动布局。

我需要获取 ScrollView 相对于其运行的设备的准确高度。有没有直接且简单的方法来实现这一点?如果没有,我想知道我必须做什么才能达到所需的高度。提前致谢!

最佳答案

我认为您将 ScrollView 的 contentSize 与其框架/边界混淆了。 ScrollView 的框架应与您正在运行的设备屏幕的边界相匹配。 contentSize 应该是“虚拟 Canvas ”大小,即“许多不同大小、不同位置的 subview 、标签和按钮”的大小。这永远不应该改变,因为您希望 ScrollView 能够滚动以显示所有内容,无论设备的实际大小是多少。我会使用自动布局将 ScrollView 的边缘扩展到其 super View 的边缘。不过,您必须在代码中显式设置 contentSize,不幸的是,无法在 Storyboard编辑器中执行此操作。

关于ios - UIScrollView 在不同设备上快速运行时不滚动或部分滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35728635/

相关文章:

iphone - 将文件下载到 iPhone 中的文件夹

ios - 长按时UILabel和UITextField(UITextView、UIWebView)一样可以实现 "select"和 "copy"吗?如何实现?

swift - ios13 中 UITextfield 的 PlaceholderColor 未设置为 PlaceHolderLabel

ios - 突然无法读取文件了

ios - UITableView reloadData() 被解雇但延迟

ios - 如何在 objective-c 中为此代码创建函数

ios - 使用UIImage放大UIView而不影响UIImage的分辨率

ios - 使用默认的邮件/发送按钮

ios - 方法调配不起作用

ios - 在使用 swift 的 iOS 中,如何创建一个始终位于整个应用程序顶部的可拖动且 float 的 UIView