调整弹出视图控制器的大小以适应要在 UITableView 中显示的数据

Posted

技术标签:

【中文标题】调整弹出视图控制器的大小以适应要在 UITableView 中显示的数据【英文标题】:Resizing the size of the popover ViewController to fit the data to be displayed in a UITableView 【发布时间】:2017-08-18 20:32:12 【问题描述】:

我正在开发一个应用程序,我有两个视图控制器。当用户在 TextField 上执行长按手势时,第一个显示一个弹出视图控制器(用于第二个视图控制器)。以下是以编程方式完成的弹出框(在第一个视图控制器中)的代码:

        func longpressGestureTriggeredForIndicativeDesignWorkingLifeTextView (gestureRecognizer: UIGestureRecognizer) 

        if gestureRecognizer.state == UIGestureRecognizerState.began 

        self.view.endEditing(true)

       

   let popController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "IndicativeDesignWorkingLifeVC")

   popController.modalPresentationStyle = UIModalPresentationStyle.popover
                popController.popoverPresentationController?.permittedArrowDirections = UIPopoverArrowDirection.up

   popController.popoverPresentationController?.delegate = self

   popController.popoverPresentationController?.sourceView = (indicativeDesignWorkingLifeTextView!)

   popController.popoverPresentationController?.sourceRect = (indicativeDesignWorkingLifeTextView as AnyObject).bounds

   self.present(popController, animated: true, completion: nil)

        

当第二个视图控制器弹出显示它包含的 UITableView 时。 popover VIewController 的大小远大于第二个 View Controller 中设置的表中包含的行数。

如何将弹出框 ViewController 的大小设置为与第二个 View Controller 中设置的 UITableView 中包含的数据量相等的高度和宽度?

【问题讨论】:

【参考方案1】:

在第二个View控制器的viewWillAppear中,需要获取tableView单元格的行高,并统计单元格的个数得到tableview的总高度。完成后,您可以使用 self.preferredContentSize 更改弹出框的高度

【讨论】:

非常感谢我正在寻找的东西 :) 我很高兴能帮上忙

以上是关于调整弹出视图控制器的大小以适应要在 UITableView 中显示的数据的主要内容,如果未能解决你的问题,请参考以下文章

调整大小后调整 UIPopoverController 位置

如何调整我的堆栈视图的分布以适应不相等的视图大小?

UIPopoverController 以不同的速度调整弹出框和内容视图控制器(uinavigationcontroller)的大小

如何使用 Xcode 8 上的自动布局调整对象的大小以适应不同的屏幕尺寸?

调整弹出窗口大小以适应图像大小

如何调整 CALayer 大小以适应父视图