我有2个GUI和2个控制器 1被称为landscapeguicontroller,第二个被称为highguicontroller。
现在我通常会调用highguicontroller,当我旋转我的iphone时,它会检测到它,然后它会显示landscapeguicontroller: 代码:
landscapeguicontroller *neu =[[landscapeguicontroller alloc] initWithNibName:nil bundle:nil];
[self presentModalViewController:neu animated:YES];
[self dismissModalViewControllerAnimated:YES];
问题在于动画将新窗口从iphone的外侧推到窗口。
在Landscapeguicontroller中,我添加了以下几行:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
当我想回到我称之为的高监控器时:
[self dismissModalViewControllerAnimated:YES];
一切正常,但只是在第二个动画中,我看到了正确的“旋转动画”。 你有什么建议吗?
所以简短的问题描述: 在1.从高到高的动画中,景观被推入窗口 但是在2.从风景到高的动画中,旋转看起来像一个真正的旋转......
我希望1.animation看起来像2.动画
最好的问候 Ploetzeneder答案 0 :(得分:3)
要避免“问题在于,动画会将新窗口从iphone的外侧推入窗口。”,尝试将视图控制器的modalTransitionStyle属性设置为以下之一,无论您喜欢什么: typedef enum { UIModalTransitionStyleCoverVertical = 0, UIModalTransitionStyleFlipHorizontal, UIModalTransitionStyleCrossDissolve, } UIModalTransitionStyle;
此外,如果您想避免动画旋转,可以将shouldRotate ...方法设置为禁止其他方向,但设置为在设备物理更改方向时接收通知,并在设置时显示模态视图控制器适当的方向。有关此示例,请参阅Apple的“AlternateViews”示例代码。
通知反映了设备的物理方向,无论接口是否允许更改,您都可以接收通知。 (您可以查看UIApplications的statusBarOrientation属性,了解UI的方向)。
答案 1 :(得分:1)
听起来你想让序列像这样:
highguicontroller
)设置为横向landscapeguicontroller
)如果这是正确的,您需要在highguicontroller
实施中使用以下内容:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown;
}
这将处理第2步(它会将纵向视图旋转到任意方向的横向)。
然后你会想要这样的东西:
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
if(fromInterfaceOrientation == UIInterfaceOrientationPortrait) {
[self presentModalViewController:landscapeguicontroller animated:YES];
}
else {
[self dismissModalViewControllerAnimated:YES];
}
}
旋转动画完成后应显示横向视图,然后在设备旋转回肖像后将其关闭。
希望有所帮助!