2011-08-28 82 views
0

我的tableview有4個單元格,每個單元格有一個不同的背景圖片。當iPhone旋轉時更改單元格中的背景圖像

當我旋轉iPhone時,行的高度會改變,還有圖片。

如果位置處於橫向或縱向位置,則很容易更改圖片,但當iPhone已旋轉而不是旋轉時,圖片會發生變化! 什麼問題? 例如:iPhone處於縱向狀態,用戶將其旋轉爲橫向。 這是非常醜陋的效果,因爲只有當iPhone處於橫向時圖片纔會變化,並且在幾分之一秒內用戶看到變形的肖像圖片(在它變化之前)。

我該如何解決?

感謝

回答

4

最簡單的辦法:
實現您的視圖控制器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]; 
    } 
+1

太好了,謝謝! – JAA

0

在這樣的情況下,一個旋轉的過程中我傾向於只使用上的元素(myObject.hidden = YES)的.hidden屬性,然後恢復它們的旋轉完成時。

我想你的相框在橫向視圖中有更多的空間 - 另一個建議如果這是真的,就是讓它們在兩個方向都保持相同的大小,那麼在旋轉過程中就不需要隱藏它們。

希望這會有所幫助!

+0

不幸的是尺寸必須改變(寬度和高度)!我不明白在iPhone旋轉時隱藏什麼...照片?這不是一個好的效果,不幸的是! – JAA

+0

好的,那麼你可以考慮使用UIView動畫淡入淡出當發生旋轉和旋轉完成時?你希望看到什麼樣的效果? – Luke

+0

謝謝,我已經嘗試了淡入淡出......這還不錯......但最後,在'willAnimateRotationToInterfaceOrientation'中重新加載數據是更好的方法!謝謝! – JAA

相關問題