2011-08-28 76 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