【发布时间】:2014-02-14 15:30:36
【问题描述】:
我尝试在IOS7下制作一个小动画。我的视图控制器有 2 个视图:一个 tableview 和一个 mapview。我有一个按钮,可以在“全屏显示地图”和“显示地图和表格视图”状态之间切换。
这是我的实验代码:
float mapNewX = self.mapView.frame.origin.x == 0 ? 375 : 0;
float mapNewWidth = mapNewX == 0 ? self.view.frame.size.width : self.view.frame.size.width - mapNewX;
[UIView animateKeyframesWithDuration:0.1 delay:0.0 options:UIViewAnimationCurveEaseOut animations:^
{
CGRect mapViewFrame = self.mapView.frame;
mapViewFrame.origin.x = (mapNewX);
mapViewFrame.size.width = mapNewWidth;
self.mapView.frame = mapViewFrame;
}
completion:^(BOOL finished)
{
NSLog(@"OK");
}];
它可以工作,但是当我旋转我的设备时,它会切换回原始状态。所以,当我有完整的地图显示时,当旋转设备时,它会在屏幕上切换回 tableview + mapview。
如果我通过导航控制器从另一个视图控制器返回,也会发生同样的情况。如果我点击地图图钉的详细信息披露,它会切换回原始布局。
我该怎么办?非常感谢!
更新:这里是旋转前后的截图(一些敏感数据被屏蔽了)
【问题讨论】:
-
如果您使用的是 UIView 关键帧 API。您不应该也使用
addKeyframeWithRelativeStartTime:relativeDuration:animations:添加关键帧吗? -
我不这么认为。感谢您的回答
-
你好@Tom。你使用自动布局或约束吗?
-
是的,我使用它们。谢谢巴舍尔。它们在界面生成器中定义。
-
那么你应该考虑删除它们。并再次检查问题。 :)
标签: ios animation layout uiview rotation