用表单工作表演示加载的模态视图的自定义大小

Fra*_*Fox 40 objective-c ipad ios uipresentationcontroller

我正在尝试使用表单表格在iPad中加载UIViewController.问题是这个新视图的大小,我将大小值放在IBuilder中,但模态视图采用固定值.

另外我试着在prepareForSegue中这样做:

HelpViewController *viewController = segue.destinationViewController;
viewController.view.superview.frame = CGRectMake(0, 0, 200, 200);
Run Code Online (Sandbox Code Playgroud)

但是不工作,有什么帮助吗?谢谢!

Eri*_*ich 77

对于iOS 8,请使用:

self.preferredContentSize = CGSizeMake(width, height);
Run Code Online (Sandbox Code Playgroud)

我把它放进去了viewDidLoad.

斯威夫特3

self.preferredContentSize = CGSize(width: 100, height: 100)
Run Code Online (Sandbox Code Playgroud)

  • 为此,我必须使用 .modalPresentationStyle = .formSheet (3认同)
  • 在iOS 8 GM中运行良好,并且打开了AutoLayout.谢谢 (2认同)

avd*_*hin 16

在"属性"检查器中检查 Use Preferred Explicit Size

在此输入图像描述

  • 如果您将演示文稿设置为表单,这将起作用。 (4认同)

Tos*_*lji 7

编辑

使用preferredContentSize.

您可以尝试在中心显示视图

HelpViewController * viewController = [[[HelpViewController alloc] init] autorelease];
viewController.modalPresentationStyle=UIModalPresentationFormSheet;
viewController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[self presentViewController:viewController animated:YES completion:^{
    viewController.view.superview.frame = CGRectMake(0, 0, 200, 200);
    viewController.view.superview.center = self.view.center;
}];
Run Code Online (Sandbox Code Playgroud)

  • 至少在iOS 7中这不起作用 - 它显示它呈现的是全尺寸,然后它会缩小它.正如"完成"块所证明的那样. (2认同)
  • 要在iOS7上执行此操作,请查看此http://stackoverflow.com/a/19026882/1363634 (2认同)

Gle*_*sov 5

preferredContentSize演示时,例如在iOS 11上设置对我不起作用EKEventEditViewController

仅当我重写的getter时,它才有效preferredContentSize。像这样:

private class CLEventEditViewController: EKEventEditViewController {
    override var preferredContentSize: CGSize {
        get {
            if let fullSize = self.presentingViewController?.view.bounds.size {
                return CGSize(width: fullSize.width * 0.5,
                              height: fullSize.height * 0.75)
            }
            return super.preferredContentSize
        }
        set {
            super.preferredContentSize = newValue
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明 在此处输入图片说明


小智 0

我也遇到了这个问题,您应该在呈现超级视图后调整其框架的大小。

HelpViewController *viewController = segue.destinationViewController;
viewController.modalPresentationStyle = UIModalPresentationPageSheet;
[self presentViewController:viewController animated:YES completion:nil];
viewController.view.superview.frame = CGRectMake(0, 0, 200, 200);
Run Code Online (Sandbox Code Playgroud)