我的tableview有4个单元格,每个单元格都有一张不同的图片作为背景。
当我旋转iPhone时,行的高度会改变,而且图片也会改变。
如果位置是横向或纵向,真的很容易改变图片,但是当iPhone已经旋转时图片会改变,而不是在旋转时! 有什么问题? 例如:iPhone处于纵向状态,用户可以横向旋转。 这是一个非常难看的效果,因为图片会在iPhone处于横向状态时发生变化,并且在几分之一秒内用户会看到肖像画面变形(之前它会发生变化)。
我该如何解决?
由于
答案 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>
希望这有帮助!