我想知道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. 更改UIView幀時的移動元素
- 3. iOS Swift方向更改動畫缺失
- 4. AS3 iOS防止「動畫」方向更改
- 5. 在iOS 6中手動更改方向
- 6. 將元素向右移動
- 7. 移動元素向上jquery
- 8. 更改佈局方向更改,導航和李元素固定或靜態
- 9. 更改數組中的元素位置並移動元素
- 10. jQuery的 - 移動元素向左或向右條件
- 11. 將選定的元素向上或向下移動
- 12. 將元素的方向從縱向更改爲橫向
- 13. iOS:如何更改UICollectionViewCell的方向?
- 14. 向左移動元素 - CSS動畫
- 15. jQuery或CSS Animate - HTML元素在滾動中向下移動
- 16. 移動固定定位元素的iOS 7輸入元素
- 17. ListView在向下滾動或向上時更改他的元素的位置android
- 18. 移動重定向:元或Javascript?
- 19. 光標移動錯覺
- 20. ios 7中的元素向下移動了20分
- 21. 更改或禁用iPhone旋轉動畫時的方向更改
- 22. 移動元素?
- 23. 動態更改html元素
- 24. 動態地更改元素
- 25. 更改偏移量動態修改元素的位置
- 26. 方向更改
- 27. 強制方向更改
- 28. Flex:移動動態子元素或元素
- 29. 方向更改錯誤
- 30. iOS的地圖方向更改後UIPopover放錯了地方