我想知道iOS中的动态动画时,我打开方向。例如。在我的iPad上,动画在菜单中看起来非常“真实”。元素(应用程序,文件夹,码头,背景图像,状态栏......)似乎以完美的审美方式滑动到正确的位置......
但是在App Store中,我发现了一个偏差,因为应用程序列表另一种安排。
我的一个大问题:orientationChangeAnimation是一个错觉还是真的如此动态?在App Store中,它看起来像是实际的屏幕正在转动,同时它的alpha值正在降低,并且改变后的屏幕的风景/肖像方向也会做相同的反转(在增加alpha值的同时转向)。iOS - 方向更改 - 错觉或元素移动?
0
A
回答
1
事实上,Springboard确实会移动东西(如码头),并且它还会交叉淡化物品(如大部分应用图标)。
由于viewWillLayoutSubviews
和willRotateToInterfaceOrientation
在旋转期间在动画块中被调用,因此您可以简单地将新值赋给动画属性,如alpha和frame。除非你想明确控制时间,否则不需要明确的调用;旋转过程中,iOS会自动为您制作动画。
作为示例,在下面的代码中,红色和绿色方块在屏幕中央交叉淡化,蓝色方块在旋转过程中在左上角和顶部中心之间移动。
CGRect b = self.view.bounds;
self.greenLabel = [[UILabel alloc] initWithFrame:CGRectMake(b.size.width/2 - 50, b.size.height/2 - 50, 100, 100)];
self.greenLabel.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin;
self.greenLabel.backgroundColor = [UIColor greenColor];
[self.view addSubview:self.greenLabel];
self.redLabel = [[UILabel alloc] initWithFrame:self.greenLabel.frame];
self.redLabel.autoresizingMask = self.greenLabel.autoresizingMask;
self.redLabel.backgroundColor = [UIColor redColor];
[self.view addSubview:self.redLabel];
self.blueLabel = [[UILabel alloc] init];
self.blueLabel.backgroundColor = [UIColor blueColor];
[self.view addSubview:self.blueLabel];
...
- (void)viewWillLayoutSubviews {
if (UIInterfaceOrientationIsLandscape(self.interfaceOrientation)) {
self.greenLabel.alpha = 0;
self.redLabel.alpha = 1;
self.blueLabel.frame = CGRectMake((self.view.bounds.size.width - 100)/2, 20, 100, 100);
} else {
self.greenLabel.alpha = 1;
self.redLabel.alpha = 0;
self.blueLabel.frame = CGRectMake(20, 20, 100, 100);
}
}
1
是的,这真的很容易做,我在很多我的应用程序做了类似的事情。如果你想复制的功能,你可以这样做:
在willRotateToInterfaceOrientation方法或在viewWillLayoutSubviews方法,你可以做以下任一:
//Fade out
[UIView animateWithDuration:0.3 animations:^ {
yourController.view.alpha = 0.2;
}];
//Fade In
[UIView animateWithDuration:0.3 animations:^ {
yourController.view.alpha = 1.0;
}];
//Fade out fade in
[UIView animateWithDuration:0.15 animations:^ {
yourController.view.alpha = 0.2;
}];
[UIView animateWithDuration:0.15 animations:^ {
yourController.view.alpha = 1.0;
}];
干杯,
山姆
相关问题
- 1. SVG移动方向更改
- 2. 将元素向右移动
- 3. 更改布局方向更改,导航和李元素固定或静态
- 4. jQuery的 - 移动元素向左或向右条件
- 5. 将选定的元素向上或向下移动
- 6. 将元素的方向从纵向更改为横向
- 7. ListView在向下滚动或向上时更改他的元素的位置android
- 8. 更改或禁用iPhone旋转动画时的方向更改
- 9. 移动元素?
- 10. 动态地更改元素
- 11. 动态更改html元素
- 12. 在iOS 5.0中更改方向
- 13. 强制方向更改
- 14. Flex:移动动态子元素或元素
- 15. 方向更改错误
- 16. 移动视觉API对于iOS和Android
- 17. ios:基于方向的移动图像
- 18. CSS - 元素不分割,向下移动
- 19. 向下移动矩阵的元素java
- 20. CSS div将元素向下移动
- 21. 强制元素向上移动
- 22. 检测重排或移动HTML元素?
- 23. 方向更改 - 更新UI
- 24. 有没有更简单的方法来移动iOS中的UI元素?
- 25. Android:方向更改动画
- 26. 更改滚动方向
- 27. Iphone:手动更改方向
- 28. 动态更改CKeditor方向
- 29. 无法移动的元素更接近浮动元素
- 30. Iphone方向更改