gpt4 book ai didi

xcode - 类似 iPad Safari 的缩略图缩放 View

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

首先,我有丰富的 iOS 开发经验,但我对 Core Animation 不是很感兴趣。当您正在查看的页面缩小并“缩小”成缩略图 View 时,我想在 Safari(iPhone 和 iPad)中重现这种效果,并且在您选择给定的缩略图后,它会“放大”并相应页面恢复。

实现此目标的最佳方法是什么?我会把它应用到 reguiar UIView 子类——而不是 UIWebView——但我不太确定如何实现整个缩小效果,并为缩小的缩略图指定目标框架(假设我在屏幕上有很多缩略图,我想将当前 View 定位到特定的缩略图中)。

最好的,

最佳答案

这可能是一个简单的 CoreAnimation 效果,调整 View 变换而不是框架。这应该适用于任何类型的观点。我乐观地认为你缺乏热情是不熟悉而不是真正的不喜欢,所以我会继续使用 CoreAnimation 答案,以防它有帮助......

UIView 有一个非常方便的方法来设置动画。例如,将 View 动画缩小到一半大小,使其居中于同一位置:

[UIView beginAnimations:nil context:nil];
view.transform = CGAffineTransformMakeScale(0.5f, 0.5f);
[UIView commitAnimations];

要缩小它并将其中心向右移动 50 像素:

[UIView beginAnimations:nil context:nil];
view.transform = CGAffineTransformTranslate(CGAffineTransformMakeScale(0.5f, 0.5f), 50.0f, 0.0f);
[UIView commitAnimations];

并从任一状态恢复正常:

[UIView beginAnimations:nil context:nil];
webView.transform = CGAffineTransformMakeScale(1.0f, 1.0f);
[UIView commitAnimations];

其背后的理论是 View 的某些属性是可动画的。这些是 CoreAnimation 能够作为正在进行的动画的一部分自行调整的属性。 UIView 类方法 beginAnimations:context: 和 commitAnimations 设置然后开始一个 CoreAnimation block 。本质上,您在 beginAnimations:context: 之后对可动画属性所做的每项更改都不会立即生效,而是设置为动画的目标状态。当您执行 commitAnimations 时,动画就会出现。

还有许多其他控件可用于通过 UIView 便捷方法来调整动画,所有这些都在 UIView 文档中进行了描述。

如果您不使用 CoreAnimation,那么您将不得不自己对变换进行逐帧调整,尽管我真的看不到这种方法有任何好处 — 它会花费更多CPU 方面不太可能如此流畅。

如果可以的话,绝对坚持变换而不是调整框架;调整变换会改变 View 添加到屏幕的方式。它不会导致 View 本身重绘。因此,如果您更改比例,就像缩放 View 的图像一样。如果您更改框架或边界,那么 iOS 将丢弃其当前的 View 外观缓冲区并请求重绘,这会花费更多。更糟糕的是,如果 CATiledLayer 上有任何东西(例如 map View 或 Web View ),那么 View 将变成其背景颜色,并且可能在动画完成之前不会再次淡入。同样,任何根据帧大小决定如何绘制的 View 都不会显示缩放,而只是更改大小。

关于xcode - 类似 iPad Safari 的缩略图缩放 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4093240/

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