我有一个视图控制器,我试图以模态方式呈现。我需要将它移动到屏幕上的特定位置。下面的代码在纵向上工作正常,但在横向视图中根本不重新定位,无论我将中心设置为什么点。如果我使用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);
}
答案 0 :(得分:0)
我真的无法帮助解决这一小段代码问题。
您加载名为PostCommentViewController
的xib文件
该xib文件有2个视图portraitView
和landscapeView
并且您尝试移动超级视图,以便包含portraitView
和landscapeView
的视图。
我不明白,但作为一个快速修复,你可以为不同的布局制作不同的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];
}
}