更改模式对话框ios的大小

问题描述 投票:0回答:3

如何更改模式对话框的大小?为什么这不起作用?

SlingDialogViewController *slingDialog = [[SlingDialogViewController alloc] init];

    slingDialog.modalPresentationStyle = UIModalPresentationFormSheet;
    slingDialog.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
    slingDialog.view.superview.frame = CGRectMake(0, 0, 900, 700);
    [self presentModalViewController:slingDialog animated:YES];
ios objective-c modal-dialog
3个回答
1
投票

这样做:

SlingDialogViewController *slingDialog = [[SlingDialogViewController alloc] init];

slingDialog.modalPresentationStyle = UIModalPresentationFormSheet;
slingDialog.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;

[self presentViewController:navController animated:YES completion:nil];

slingDialog.view.superview.frame = CGRectMake(0, 0, 900, 700);
slingDialog.view.superview.center = self.view.center;

首先打电话给

presentViewController:animated:completion
很重要,至少根据我的经验。


0
投票

iOS 中的模态控制器具有固定的大小。我不建议尝试更改它们,它永远不会可靠地工作。

解决方法是自己实施。模态(呈现)控制器是一个非常简单的功能:

  1. 视图与呈现控制器重叠,因此无法单击它(并且它会使内容变暗以使它们看起来像背景)

  2. 子视图控制器(及其视图)添加到您的控制器。


0
投票

基于 mprivat 在控制器中的回答:

override func viewIsAppearing(_ animated: Bool) {
    super.viewIsAppearing(animated)

    guard let superview = view.superview else {
        return
    }
    let intrinsicHeight = self.view.bounds.height
    let adjusted = CGRect(x: 0, y: 0, width: self.view.bounds.width, height: intrinsicHeight)
    let height = superview.bounds.size.height
    superview.frame = adjusted
    if var center = presentingViewController?.view.center {
        center.y = superview.bounds.size.height + intrinsicHeight / 2
        superview.center = center
    }
}

这适用于第三代 SE 上的 iOS 16.7.1。 原始解决方案对我不起作用。

© www.soinside.com 2019 - 2024. All rights reserved.