背景:应用程序具有摇一摇回家功能。主页视图 仅支持纵向。如果您比平时更用力地摇动,您所在的视图会开始旋转(这很好),但随后它会检测到摇动并对主视图执行 popViewController。当它这样做时,它加载导航控制器就好了,但是(主页内容)下的视图被加载到栏后面并被拉伸(它基本上是在导航栏下面加载,所以它被拉伸了)
后退按钮可以很好地处理从横向到纵向的处理(因为它不是中间过渡)
我应该如何处理这种方向变化(从摇动),以便我可以弹回根视图控制器,而无需在导航栏下加载视图?
编辑:发生的事情是内容认为它有整个视图要加载,所以它会伸展自己以占据整个屏幕,而没有意识到它上面有一个导航栏。我可以知道,因为加载的图像被拉伸了
增加了50的赏金。
编辑这是我检测震动和爆裂的方式
- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event
{
if ( event.subtype == UIEventSubtypeMotionShake )
{
UINavigationController *navController = self.navigationController;
[[self retain] autorelease];
HomeViewController *home = [[HomeViewController alloc]init];
[navController popViewControllerAnimated:YES];
home.title =@"Home View Controller";
[home release];
}
if ( [super respondsToSelector:@selector(motionEnded:withEvent:)] )
[super motionEnded:motion withEvent:event];
}
这是我的应用程序代表:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
navController = [[UINavigationController alloc]init];
[self.window addSubview:navController.view];
HomeViewController *home = [[HomeViewController alloc]init];
[[self home] setFrame:[[UIScreen mainScreen] applicationFrame]];
我将在这里包含一个模型。
普通视图:
摇晃/弹出后的拉伸视图:
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
}
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
return YES;
}