【发布时间】:2014-03-03 18:58:48
【问题描述】:
如果标题没有告诉您任何内容,以下是我最近发现并很好奇的内容: 在我的应用程序中,我有一个带有按钮的 UIScrollView。这些按钮每个都有一个子视图 - UILabel 的一个实例。有时会触发一个特定事件来更改标签中的文本,我还需要更改标签和按钮的框架,以便可以显示整个文本(不会被截断)。所以我只是抓住了一个按钮的第一个子视图并检查了它的文本需要多少空间。
如果在滚动期间发生该事件,则会导致崩溃。事实证明,除了标签之外,每个按钮都有另一个子视图,它是 UIImageView 的实例。起初我认为在滚动过程中,UIScrollView 会对其子视图进行“截图”并将图像放在顶部,以便为滚动设置动画在性能方面的成本要低一些。然而这个逻辑是有缺陷的,因为 UIImageView 是索引为 0 的子视图,所以它被放在了我的标签下面。
有人知道为什么会这样吗? Apple 工程师试图通过这种奇怪的机制实现什么目标?
请注意,它实际上可能只发生在按钮上。另外,我检查了标签,它们没有任何子视图。
【问题讨论】:
标签: ios objective-c uiscrollview uiimageview uikit