gpt4 book ai didi

ios - 如何优化 UIView 过渡动画?

转载 作者:行者123 更新时间:2023-11-29 03:40:11 25 4
gpt4 key购买 nike

我使用以下代码在 View 之间进行转换:

// Populate view2 here
UIView *theWindow = [_view2 superview];
[_view2 removeFromSuperview];

CATransition *animation = [CATransition animation];
[animation setDuration:0.25f];
[animation setType:kCATransitionPush];
[animation setSubtype:kCATransitionFromRight];
[animation setTimingFunction:[CAMediaTimingFunction
functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];

[[theWindow layer] addAnimation:animation forKey:@"SwitchToSecondView"];

这确实有效,但是过渡并不完全顺利。我正在 iPhone4 设备 v5.1.1 上进行测试。两个 View 都包含一个 UINavigationView、UIScrollView 以及大约 20 个 subview ,我考虑过在动画完成后填充 View ,但如果可能的话,我想避免这种情况。我对过渡的顺利程度评价为 7/10。
我怎样才能使这个过渡尽可能顺利?

最佳答案

您的 ScrollView 有 20 个 subview 是导致您出现问题的原因。虽然我必须查看代码本身来证明这一点,但是当我尝试创建一个具有许多 subview 的 ScrollView 时,我也遇到了同样的问题,最终结果的行为类似于 UITableView(记住UITableViewUIScrollView 的子类)。 注意:证明这是原因很简单。只需删除 UIScrollView 的 20 个 subview ,然后运行您的动画。如果延迟消失,那么这就是充分的证明。

请注意 UITableView 可能有数千行..但它的设计方式是重用不再出现在屏幕上的单元格(即从池中回收 View ,而不是创建新 View 每次需要它们时)。换句话说,它不能在内存中保留比屏幕显示的行数更多的行,否则它会变得滞后。

所以回到你有 20 个 subview 的 scrollview,想办法只使用显示在屏幕上的 subview ,而不是每次都释放和分配新的 subview ,以同样的方式重用它们 UITableView 确实如此。

请看这个interesting post UITableView 是如何在幕后实际创建的。我相信它会让您了解如何优化您自己的 scrollview 以避免延迟。

更新:根据评论中您的 View 层次结构的详细信息..这就是我要做的

  1. 我会进行转换,但只显示 n 数量适合屏幕的 UIImageViews (即您的情况下为 7).. 在 UIAnimation 中完成 block 处理程序,我将添加其余的 View
  2. 如果以上还不够,我还会将图像加载到 UIAnimation 完成处理程序中的 View 中。
  3. 如果以上还不够……我还会将 2 个 UIButton 和 2 个 UILabels 附加到完成处理程序中的 subview 。

你看到这里的模式了吗?这个想法是一个有针对性的反复试验:从转换中一个一个地删除最昂贵的操作,并将其放置在转换完成之后。或者,您可以用填充物替换已被推回动画末尾的 UIView(即,考虑图像的占位符、微调器等。这些替换的选择实际上取决于 UX 原则以及您认为在美学上会是什么取悦用户)

关于ios - 如何优化 UIView 过渡动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18563734/

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