iPhone旋转时更改单元格中的背景图像

时间:2011-08-28 21:51:04

标签: iphone ios uitableview background-image

我的tableview有4个单元格,每个单元格都有一张不同的图片作为背景。

当我旋转iPhone时,行的高度会改变,而且图片也会改变。

如果位置是横向或纵向,真的很容易改变图片,但是当iPhone已经旋转时图片会改变,而不是在旋转时! 有什么问题? 例如:iPhone处于纵向状态,用户可以横向旋转。 这是一个非常难看的效果,因为图片会在iPhone处于横向状态时发生变化,并且在几分之一秒内用户会看到肖像画面变形(之前它会发生变化)。

我该如何解决?

由于

2 个答案:

答案 0 :(得分:4)

简单方法:
在视图控制器中实现willAnimateRotationToInterfaceOrientation。在此方法中,您可以重新定向图片,它们将自动生成动画。在http://www.dizzey.com/development/ios/handling-layout-on-uiinterfaceorientation-change/

上有一个简短的概述以及其他可用的界面定位方法

毫无意义的困难之处:
您可以手动跟踪加速度并编写自己的动画块。 将视图控制器设置为UIAccelerometerDelegate。参考sharedAccelerometer如下。

    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 :(得分:0)

在这种情况下,在旋转期间,我倾向于只在元素上使用.hidden属性(myObject.hidden = YES),然后在旋转完成时恢复它们。

我想你的相框在横向视图中有更多的空间 - 如果这是真的另一个建议,就是在两个方向上保持它们相同的大小,那么你不需要在旋转期间隐藏它们,例如。 / p>

希望这有帮助!