无法在风景中定位模态框架,但在纵向中也可以

时间:2013-11-11 23:46:58

标签: ios ipad uiviewcontroller ios7

我有一个视图控制器,我试图以模态方式呈现。我需要将它移动到屏幕上的特定位置。下面的代码在纵向上工作正常,但在横向视图中根本不重新定位,无论我将中心设置为什么点。如果我使用pcvc.landscapeView.center而不是pcvc.landscapeView视图重新定位,但是灰色框保留在视图的原始位置,我无法与视图交互。

横向时,如何以不同方式处理视图控制器?

PostCommentViewController *pcvc = [[PostCommentViewController alloc] initWithNibName:@"PostCommentViewController" bundle:nil];
pcvc.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
pcvc.modalPresentationStyle = UIModalPresentationFormSheet;
[self presentViewController:(UIViewController *)pcvc animated:YES completion:nil];
if (UIInterfaceOrientationIsPortrait(self.interfaceOrientation))
{
    pcvc.portraitView.superview.frame = CGRectMake(0, 0, 750, 143);
    pcvc.portraitView.superview.center = CGPointMake(384, 680);
}
else
{
    pcvc.landscapeView.superview.frame = CGRectMake(0, 0, 683, 300);
    pcvc.landscapeView.superview.center = CGPointMake(500, 60);
}

1 个答案:

答案 0 :(得分:0)

我真的无法帮助解决这一小段代码问题。 您加载名为PostCommentViewController的xib文件 该xib文件有2个视图portraitViewlandscapeView 并且您尝试移动超级视图,以便包含portraitViewlandscapeView的视图。

我不明白,但作为一个快速修复,你可以为不同的布局制作不同的xib。 再次,我没有你的viewcontroller层次结构,所以很难提供帮助。

在didrotate中调用它

-(void)changeOrientation {
    UIDeviceOrientation orientation = [UIDevice currentDevice].orientation;
    if (orientation == UIDeviceOrientationPortrait || orientation == UIDeviceOrientationPortraitUpsideDown) {
        [[NSBundle mainBundle] loadNibNamed:@"Portrait" owner:self options:nil];
    }
    else {
        [[NSBundle mainBundle] loadNibNamed:@"Landscape" owner:self options:nil];
    }

}