6

我试图通过减少它的宽度和高度在 iPad 上显示 modalView,但问题是它不是居中对齐的。在 iOS 6 中它曾经可以正常工作,但在 iOS 7 中它不是居中对齐的。

下面是我的代码:

 m_helpQA = [[HelpQAViewController alloc]init];

 m_helpQA.modalPresentationStyle = UIModalPresentationFormSheet;      

 [self presentViewController:m_helpQA animated:YES completion:NULL];
 m_helpQA.view.superview.bounds = CGRectMake(0, 0, 350, 250);//Dimensions of ModalView.

目前我是这样理解的

在此处输入图像描述

4

3 回答 3

1

您需要将框架居中,这样的东西应该可以工作(我还没有测试过)。

CGRect appFrame = [UIScreen mainScreen].applicationFrame;
CGRect modalFrame = m_helpQA.view.superview.frame;
modalFrame.size = CGSizeMake(350.f, 250.f);
modalFrame.origin.x = appFrame.size.width/2.0f - modalFrame.size.width/2.0f;
modalFrame.origin.y = appFrame.size.height/2.0f - modalFrame.size.height/2.0f;
m_helpQA.view.superview.frame = modalFrame;

更新代码以纠正错字

于 2013-10-21T15:58:25.360 回答
1

对于 iOS 7 试试这个:

[self.navigationController presentViewController:navigationController animated:YES completion:^{
    //Make the modal bigger than normal
    navigationController.view.superview.bounds = CGRectMake(0, 0, 700, 650);
}];

动画看起来很难看,所以我建议添加一个动画来改进它:

[self.navigationController presentViewController:navigationController animated:YES completion:^{
    [UIView animateWithDuration:0.3 delay:0 options:UIViewAnimationOptionCurveEaseIn animations:^{
        //Make the modal bigger than normal
        navigationController.view.superview.bounds = CGRectMake(0, 0, 700, 650);
    } completion:^(BOOL finished) {
    }];
}];

还要记住,您需要在 viewDidAppear 中设置 navigationControllers 视图的框架,以使内容的大小正确。

于 2014-01-24T10:44:51.723 回答
0

尝试以下操作:

UIViewController *vc = [[UIViewController alloc] initWithNibName:nil bundle:nil];
...

[self presentViewController:vc animated:NO completion:^{
    vc.view.superview.center = self.view.window.center;
}];

// resize modal view
infoModalViewController.view.superview.bounds = CGRectMake(0, 0, newWidth, newHeight);

我必须在完成块中设置中心(在本例中为窗口的中心,但您也可以使用父视图控制器的中心)以使其正常工作。切换到animation:No,否则它会看起来很丑:-)

于 2014-04-02T16:19:58.343 回答