我在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)
有没有办法实现这个目标?
答案 0 :(得分:0)
在您的代码中,您没有将secondViewController添加为子视图控制器。您正在呈现该视图控制器。有区别。
您正尝试使用UIModalPresentationStyle.custom
使用自定义样式显示viewcontroller。但是使用这种自定义样式并不是一件容易的事。
创建自定义样式涉及 子类化UIPresentationController并使用其方法进行动画处理 任何自定义视图到屏幕上,并设置的大小和位置 呈现的视图控制器。演示控制器也 处理由于所呈现的更改而发生的任何调整 查看控制器的特征
它告诉您需要子类化UIPresentationController
并将其方法(使用其他方法)- (CGRect)frameOfPresentedViewInContainerView
子类化以设置所呈现的视图控制器的框架。
this link中解释了更多内容。
你可以通过实际添加一个childviewcontroller来实现这一切。 步骤将是这样的:
addSubview:
答案 1 :(得分:0)
这取决于你想要做什么,当我想在另一个UIViewController上显示一些UI时,我通常使用带有self.modalPresentationStyle = .overFullScreen
的全屏视图控制器。然后我创建了另一个视图,它具有我想要向用户显示的可见大小。这可以让你做任何你想做的事情。
但是如果你想要一个真正的子视图控制器,你需要使用appropriate functions。