更改子视图控制器的宽度
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了更改子视图控制器的宽度相关的知识,希望对你有一定的参考价值。
我在swift 3.0中以编程方式将子视图控制器添加到父视图控制器。
但我不希望子视图控制器宽度为全屏,我想自定义子视图控制器的宽度和高度。我试图打开自定义大小子视图控制器,但它无法正常工作。
// Here is my code
let secondViewController = storyboard.instantiateViewController(withIdentifier: storyBoardName)
secondViewController.modalPresentationStyle = UIModalPresentationStyle.custom
secondViewController.view.frame = CGRect(x: 0, y: 0, width: self.view.bounds.width-500, height: self.view.bounds.height)
self.present(secondViewController, animated: false, completion: nil)
有没有办法实现这个目标?
在您的代码中,您没有将第二个ViewController添加为子视图控制器。您正在呈现该视图控制器。它们是有区别的。
您正在尝试使用UIModalPresentationStyle.custom
使用自定义样式呈现viewcontroller。但使用这种自定义样式并不是一件容易的事。
创建自定义样式涉及子类化UIPresentationController并使用其方法将任何自定义视图设置为屏幕动画,并设置呈现的视图控制器的大小和位置。演示控制器还处理由于所呈现的视图控制器特征的变化而发生的任何调整
它告诉您需要子类化UIPresentationController
并将其方法(使用其他方法)子类化- (CGRect)frameOfPresentedViewInContainerView
来设置所呈现的viewcontroller的框架。
this link解释了更多内容。
你可以通过实际添加一个childviewcontroller来实现这一切。步骤将是这样的:
- 创建子视图控制器实例。
- 将其视图框设置为您想要的任何内容。
- 使用
addSubview:
将其视图作为子视图添加到父视图控制器的视图中 - 在父viewcontrller(https://developer.apple.com/documentation/uikit/uiviewcontroller/1621394-addchildviewcontroller)上调用[addChildViewController]
这取决于你想要做什么,当我想在另一个UIViewController上显示一些UI我通常使用self.modalPresentationStyle = .overFullScreen
的全屏视图控制器。然后我创建了另一个视图,它具有我想要向用户显示的可见大小。这可以让你做任何你想做的事情。
但是如果你想要一个真正的子视图控制器,你需要使用appropriate functions。
以上是关于更改子视图控制器的宽度的主要内容,如果未能解决你的问题,请参考以下文章