我有一点关于当 iOS 设备改变方向时某些 View 如何旋转的问题。
我现在正在开发一个应用程序,它基本上由 2 个 View Controller 组成:第一个是嵌入在 UINavigationController 中的 UITableViewController,第二个是基于标准 UIViewController 构建的完全自定义的。
我注意到在我的 UINavigationController View 中,当设备旋转时,UINavigationBar 和 UIToolbar 在转换到横向尺寸时都会执行交叉淡入淡出动画。
出于技术原因,我没有为我的自定义 View Controller 使用 UINavigationController,但我在相同的位置手动添加了 UINavigationBar 和 UIToolbar(基本上是因为我需要这些元素能够覆盖在顶部的背景 View ,因为它们可以选择隐藏,我希望直接控制来做到这一点)。
但是,当我在自定义 View Controller 可见时旋转我的设备时,两个条不会执行交叉淡入淡出过渡。相反,所有的 subview 都在滑动(看起来有点困惑),并且背景图像在动画实际开始之前立即切换到 iPhone 横向版本而扭曲(即,它开始将 32pt 高的艺术品平铺在一个44pt 高的 UIToolbar)。
我只是想知道,现在有没有人知道当设备方向改变时,Apple 是如何为某些 UIViews 创建这种交叉淡入淡出混合效果的?
Best Answer-推荐答案 strong>
不要使用原生自动旋转来旋转您的 View 。手动旋转它们。在这里查看第二个答案:http://stackoverflow.com/questions/1220580/iphone-dev-manually-rotate-view。本质上,您注册设备轮换通知并自己进行 View 轮换。
如果你想交叉淡入淡出除了上面链接中指定的 UIView 动画 block 之外的两个 View ,请转到:
[UIView transitionWithView:superViewOfButtonView duration:2.0 options:UIViewAnimationOptionTransitionCrossDissolve animations:^{
[thebuttonViewIWantToCrossFade setFrame:newPositionRect];
}completion:^(BOOL finished){
//any completion code
}];
让我知道这是否适合你!
关于ios - 在设备方向更改时交叉淡入某些 UIView,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/12083668/
|