动态调整Popover中嵌入的表视图的宽度以适合单元格内容

时间:2015-12-08 06:15:34

标签: ios uitableview uipresentationcontroller

我的风景,iPad应用程序有一个表格视图控制器,从条形按钮项目显示为弹出窗口。

为了使popover适合表视图大小,我在表视图控制器的代码上执行此操作:

override func viewDidLoad()
{
    super.viewDidLoad()

    tableView.estimatedRowHeight = 44.0
    tableView.rowHeight = UITableViewAutomaticDimension
    tableView.scrollEnabled = false
}

override func viewWillAppear(animated: Bool)
{
    super.viewWillAppear(animated)

    tableView.reloadData()   
    preferredContentSize = tableView.contentSize
}

这适用于将弹出框的高度调整为表视图的高度(考虑行数和每行的高度)。

然而,如果我将其中一个单元格的标签设置为太长的字符串,它将截断(...),即使屏幕上有足够的空间使popover(和表视图)水平进一步增长。

我可以硬编码一些足够大的宽度,如下所示:

override func viewWillAppear(animated: Bool)
{
    super.viewWillAppear(animated)

    tableView.reloadData() 

    var size = tableView.contentSize
    size.width = 600  
    preferredContentSize = size 
}

...但我更喜欢更动态和更优雅的解决方案(例如,适合所有细胞和内容的最小宽度)。

1 个答案:

答案 0 :(得分:0)

使用它们动态处理它们

DynamicView.autoresizingMask = UIViewAutoresizing.FlexibleTopMargin .union(UIViewAutoresizing.FlexibleLeftMargin .union(UIViewAutoresizing.FlexibleRightMargin))