如何使用导航栏和自定义大小创建 modalVC?

Posted

技术标签:

【中文标题】如何使用导航栏和自定义大小创建 modalVC?【英文标题】:How create modalVC with navBar and custom size? 【发布时间】:2018-03-02 10:41:24 【问题描述】:

我需要创建具有自定义大小的自定义 modalVC(例如:CGSize(width: 100, height: 100) 和坐标)。 ModalVC 可能不像 popover(popover 有圆角)。

将有一个导航栏,其中包含“完成”项,用于关闭此 modalVC。

VC 将在其他 VC 中为 UIButton 按下创建。

有我的代码(由其他代码创建,仅存在弹出框):

class ViewController: UIViewController, UIPopoverPresentationControllerDelegate 
    @IBOutlet var button: UIButton!
    @IBAction func buttonPressed(sender: UIButton) 
        showModalVC()
    

    override func viewDidLoad() 
        super.viewDidLoad()
    

    func showModalVC() 
        let modalVC = CustomModalViewController()
        modalVC.modalPresentationStyle = .popover
        if let modal = modalVC.popoverPresentationController 
            modal.delegate = self
            modal.sourceView = self.view
        
        self.present(modalVC, animated: true, completion: nil)
    


class CustomModalViewController: UIViewController 
    override func viewDidLoad() 
        super.viewDidLoad()
        self.preferredContentSize = CGSize(width: UIScreen.main.bounds.width,
                                           height: UIScreen.main.bounds.height/3)
    

P.S:我知道如何像 PopOver 一样做到这一点,但不像自定义模式。

【问题讨论】:

到目前为止你做了什么?请向我们提供您的代码 您的最终结果可能会更具体一些,但我相信您正在寻找的是“添加子视图控制器”。请检查一下这个链接:developer.apple.com/library/content/featuredarticles/… 【参考方案1】:

试试这个

let VC = self.storyboard!.instantiateViewController(withIdentifier: "Identifier") as! YourViewController
let navController = UINavigationController(rootViewController: VC)
navController.preferredContentSize = CGSize(width: 500, height: 400)
navController.modalPresentationStyle = .formSheet
self.present(navController, animated:true, completion: nil)

【讨论】:

很好,但也许您可以添加有关如何将 modalVC 设置为屏幕底部并将其设置为宽度 = 屏幕宽度的信息?

以上是关于如何使用导航栏和自定义大小创建 modalVC?的主要内容,如果未能解决你的问题,请参考以下文章

uniapp实战笔记使用uni-nav-bar自定义顶部状态栏和导航栏

Swift - 使用导航栏和标签栏获取 viewController 的大小

侧面导航抽屉项目单击不起作用

在状态栏和导航栏之间添加图片

Twitter引导导航栏和下拉菜单-不调整大小

uniapp使用uni-nav-bar自定义顶部状态栏和导航栏