- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
首先,我有丰富的 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/
我有一个具有可变数量子元素的固定大小的 div。我不知道 children 的大小。目标是缩小它们以适合父级。 例子: .parent { width: 100px; height: 100p
我是一名优秀的程序员,十分优秀!