gpt4 book ai didi

ios - UILabel 重绘 View 。如何避免这种行为?

转载 作者:行者123 更新时间:2023-11-29 12:21:13 24 4
gpt4 key购买 nike

我有一个带有三个 subview 的 viewController。我还使用 AutoLayout 和大小类。这些 View 是动画的并且会改变位置和大小。在动画之后我更新了一个标签,但是整个 View 都被重新绘制了,所以每个 View 都处于它们的初始位置和大小。这不应该发生。正如 Apple 开发人员引用中所说:

"The default content mode of the UILabel class is UIViewContentModeRedraw. This mode causes the view to redraw its contents every time its bounding rectangle changes. You can change this mode by modifying the inherited contentMode property of the class."

我似乎不清楚如何修改 -contentMode- 以更新该标签并保持 View 原样。谁能给我一个线索?提前致谢。

最佳答案

听起来您可能正在使用自动布局来布置您的 View (例如,通过 IB 中的约束),但是您正在直接为您的动画操作 View 的 frame - 是这个案子?如果是这样,您应该改为对约束的 constant 值进行动画处理,或者可能对 subview 的 transform 进行动画处理。

如果您直接在使用自动布局的 View 中操作框架,您的更改将在下次系统布置您的 View 时被覆盖(例如,在标签的文本更改后)。

您有 3 个选项来解决您的问题 -

  1. 停止在 Storyboard/Xib 中使用 AutoLayout。

    不是很好的解决方案

  2. 对 subview 的 transform 属性进行动画更改。例如myView.transform = CGAffineTransformMakeScale(2.0,2.0);

    对于演示和关闭动画很有用,但在 iOS 8.0 之前混合使用 AutoLayout 和转换会出现一些问题

  3. 为您需要在动画中更改的约束添加 IBOutlet。对这些约束的 constant 值进行动画更改。

    最稳健的方法,但会导致复杂动画的大量属性和代码

关于ios - UILabel 重绘 View 。如何避免这种行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30566743/

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