我的tableview有4個單元格,每個單元格有一個不同的背景圖片。當iPhone旋轉時更改單元格中的背景圖像
當我旋轉iPhone時,行的高度會改變,還有圖片。
如果位置處於橫向或縱向位置,則很容易更改圖片,但當iPhone已旋轉而不是旋轉時,圖片會發生變化! 什麼問題? 例如:iPhone處於縱向狀態,用戶將其旋轉爲橫向。 這是非常醜陋的效果,因爲只有當iPhone處於橫向時圖片纔會變化,並且在幾分之一秒內用戶看到變形的肖像圖片(在它變化之前)。
我該如何解決?
感謝
我的tableview有4個單元格,每個單元格有一個不同的背景圖片。當iPhone旋轉時更改單元格中的背景圖像
當我旋轉iPhone時,行的高度會改變,還有圖片。
如果位置處於橫向或縱向位置,則很容易更改圖片,但當iPhone已旋轉而不是旋轉時,圖片會發生變化! 什麼問題? 例如:iPhone處於縱向狀態,用戶將其旋轉爲橫向。 這是非常醜陋的效果,因爲只有當iPhone處於橫向時圖片纔會變化,並且在幾分之一秒內用戶看到變形的肖像圖片(在它變化之前)。
我該如何解決?
感謝
最簡單的辦法:
實現您的視圖控制器willAnimateRotationToInterfaceOrientation
。在這種方法中,您可以重新調整圖片的方向,並自動生成動畫。有一個簡短的概述,這和其他可用的接口定位方法在http://www.dizzey.com/development/ios/handling-layout-on-uiinterfaceorientation-change/
白白艱難的道路:
您可以手動跟蹤加速,寫自己的動畫塊。 將您的視圖控制器設置爲UIAccelerometerDelegate。如下所示參考共享加速度計。
accel = [UIAccelerometer sharedAccelerometer];
accel.delegate = self;
accel.updateInterval = 1.0f/60.0f;
然後執行這個委託方法。每當加速度計發現加速度時,都會執行此操作。跟蹤X軸上的加速度將爲您提供橫向/縱向定位。
#pragma mark UIAccelerometer delegate method
-(void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration {
if(acceleration.x > 0.8) //landscape right
{
[UIView beginAnimations:@"text spin" context:nil];
[UIView setAnimationCurve:UIViewAnimationCurveLinear];
[UIView setAnimationDuration:0.2];
//do some animation to landscape right
[UIView commitAnimations];
}
if(acceleration.x < -0.8) //landscape left
{
[UIView beginAnimations:@"text spin" context:nil];
[UIView setAnimationCurve:UIViewAnimationCurveLinear];
[UIView setAnimationDuration:0.2];
//do some animation to landscape left
[UIView commitAnimations];
}
if(acceleration.x < 0.2 && acceleration.x > -0.2) //portrait
{
[UIView beginAnimations:@"text spin" context:nil];
[UIView setAnimationCurve:UIViewAnimationCurveLinear];
[UIView setAnimationDuration:0.2];
//do some animation to portrait view
[UIView commitAnimations];
}
在這樣的情況下,一個旋轉的過程中我傾向於只使用上的元素(myObject.hidden = YES)的.hidden屬性,然後恢復它們的旋轉完成時。
我想你的相框在橫向視圖中有更多的空間 - 另一個建議如果這是真的,就是讓它們在兩個方向都保持相同的大小,那麼在旋轉過程中就不需要隱藏它們。
希望這會有所幫助!
太好了,謝謝! – JAA