UIView. 我可以使用的最大边界尺寸是多少?

7

请问有人知道someView.bounds.size的最大值是多少吗?我正在创建一个视图层次结构,其中所有子视图的累积边界框等于根父视图。

谢谢, Doug


我在早期的iOS版本中遇到了2048像素视图的限制。有人知道在SwiftUI中是否仍然存在这个问题吗? - undefined
3个回答

9
根据UIView文档
在iPhone OS 3.0之前,UIView实例的最大高度和宽度为1024 x 1024。在iPhone OS 3.0及更高版本中,视图不再受此最大尺寸的限制,但仍受到其消耗的内存量的限制。因此,你最好尽可能保持视图尺寸较小。无论运行哪个版本的iPhone OS,如果需要创建大于1024 x 1024尺寸的视图,应考虑使用CATiledLayer对象。
实际上,在标准iPhone / iPhone 3G上的2.x中,我能够创建2048 x 2048大小的UIView和CALayer。超过此大小的任何内容都将停止呈现。

一如既往,感谢你的帮助 Brad。我会研究一下 CATiledLayer。Cocoa 中仍有些不清楚的地方是何时应该在 CALayer 层面实现,何时应该保持在更高级别的 UIView 上。你有什么见解吗?谢谢,Doug。 - dugla
在性能方面,它们大致相同。 您可以使用CALayer执行一些更高级的动画,但是您可以将这些动画直接执行在UIView的CALayer上。 我发现最大的原因是Mac-iPhone跨平台代码,因为CALayer的API在两个平台之间几乎完全相同。 更多信息,请参见此问题的答案:https://dev59.com/JnM_5IYBdhLWcg3wRw91 - Brad Larson
我在尝试使用上下文将一个大的WKWebView层次结构渲染成UIImage时遇到了一些问题,最终通过使用打印格式化程序并根据我想要渲染的大小设置页面大小来解决了这个问题,但仅适用于第一页。 - Juan Boero

1

我不知道是否有特定的限制。我已经创建了数百页宽度的UIScrollViews而没有任何问题。你试过了吗?遇到了问题吗?

保罗


我想知道scrollView滚动/缩放的contentView的最大像素尺寸。您使用的页面的像素大小是多少? - dugla
1
我正在开发一款书籍阅读器应用。有些书籍有几百页,所以是320 x 700 == 224000。我的意思是我还没有看到实际的限制。我不认为它会预分配内存或其他什么。 - Paul Franceus

0

我认为没有可想象的限制。由于大小被存储为浮点数,我的猜测是它被限制在CGFLOAT_MAX,这个数字非常大,不需要担心。


Barry,我的担忧是实例化一个UIView - 其子类 - 超过了一个固定的限制。也许是帧缓冲区大小,因为在i(Phone|Pod)上发生的所有硬件渲染都是在幕后进行的。 - dugla

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接