ipad应用程序 - 大多数视图旋转确定。一种观点不是

时间:2012-05-02 18:03:31

标签: xcode ios5 rotation

我正在构建一个iPad应用,其中所有视图都应该自动旋转。一种观点让我头疼。

我知道此问题的变体之前曾被问过几次,但我找不到合适的解决方案..

我通过调用应用程序中的例程来转到此视图。代表。这个例程的代码是:

- (void)flipToBack {
    //NSLog(@"%s", __FUNCTION__);

    DrawingViewController *drawView = [[DrawingViewController alloc] initWithNibName:@"Draw" bundle:nil];
    [self setDrawingViewController:drawView];
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:1.0];
    [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:window cache:YES];

    [self.window addSubview:[drawView view]];
    [UIView commitAnimations];

    //  NSLog (@" FINISHED ");
}

这是一个带有UIView子视图的视图控制器(mvc),后者用于绘图。 mvc和子视图都没有正确旋转。

我用来调用mvc中的旋转的代码是:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return YES;
}

mvc有两个工具栏,顶部和底部,这些需要调整大小。无论轮换如何,它们也应保持顶部和底部。

项目摘要显示支持所有方向,但我认为这仅适用于应用。初始化。

我为mvc做了所有的支柱。

我正在构建这样的工具栏:

UIInterfaceOrientation fieldOrient = [[UIApplication sharedApplication] statusBarOrientation];
    if ((fieldOrient == UIDeviceOrientationLandscapeLeft) || (fieldOrient == UIDeviceOrientationLandscapeRight)) {
        CGRect frame = CGRectMake(0, 50, 1024, 35 );
        topToolbar.frame = frame;
    } else {
        CGRect frame = CGRectMake(0, 50, 768, 35 );
        topToolbar.frame = frame;


UIInterfaceOrientation fieldOrient = [[UIApplication sharedApplication] statusBarOrientation];
    if ((fieldOrient == UIDeviceOrientationLandscapeLeft) || (fieldOrient == UIDeviceOrientationLandscapeRight)) {
        CGRect frame = CGRectMake(0, 650, 1024, 35 );
        bottomToolbar.frame = frame;
    } else {
        CGRect frame = CGRectMake(0, 950, 768, 35 );
        bottomToolbar.frame = frame;

我想我错过了一些明显的东西..任何帮助/指针都会受到赞赏。

2 个答案:

答案 0 :(得分:1)

尝试在将旋转到界面方向的方法中设置框架:

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {

    if ((toInterfaceOrientation == UIDeviceOrientationLandscapeLeft) || (toInterfaceOrientation == UIDeviceOrientationLandscapeRight)) {
        CGRect frame = CGRectMake(0, 650, 1024, 35 );
        bottomToolbar.frame = frame;
    } else {
        CGRect frame = CGRectMake(0, 950, 768, 35 );
        bottomToolbar.frame = frame;
}

答案 1 :(得分:0)

我的答案是将视图呈现为模态视图。它并不理想但它有效。