动态调整 Table 视图嵌入弹出框的宽度以适合单元格内容
Dynamically Adjust Width of Table View Embedded in Popover to Fit Cell Content
My landscape,iPad 应用程序有一个 table 视图控制器,显示为来自条形按钮项的弹出窗口。
为了使弹出窗口适合 table 视图大小,我在 table 视图控制器的代码中执行此操作:
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
}
这适用于将弹出窗口的高度调整为 table 视图的高度(考虑到行数和每行的高度)。
但是, 如果我将其中一个单元格的标签设置为太长的字符串,它会被截断 (...
),即使有屏幕上有足够的空间供弹出窗口(和 table 视图)进一步水平扩展。
我可以硬编码一些足够大的宽度,像这样:
override func viewWillAppear(animated: Bool)
{
super.viewWillAppear(animated)
tableView.reloadData()
var size = tableView.contentSize
size.width = 600
preferredContentSize = size
}
...但我更喜欢更动态和优雅的解决方案(例如适合所有单元格内容的最小宽度)。
使用这些动态处理它们
DynamicView.autoresizingMask = UIViewAutoresizing.FlexibleTopMargin .union(UIViewAutoresizing.FlexibleLeftMargin .union(UIViewAutoresizing.FlexibleRightMargin))
My landscape,iPad 应用程序有一个 table 视图控制器,显示为来自条形按钮项的弹出窗口。
为了使弹出窗口适合 table 视图大小,我在 table 视图控制器的代码中执行此操作:
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
}
这适用于将弹出窗口的高度调整为 table 视图的高度(考虑到行数和每行的高度)。
但是, 如果我将其中一个单元格的标签设置为太长的字符串,它会被截断 (...
),即使有屏幕上有足够的空间供弹出窗口(和 table 视图)进一步水平扩展。
我可以硬编码一些足够大的宽度,像这样:
override func viewWillAppear(animated: Bool)
{
super.viewWillAppear(animated)
tableView.reloadData()
var size = tableView.contentSize
size.width = 600
preferredContentSize = size
}
...但我更喜欢更动态和优雅的解决方案(例如适合所有单元格内容的最小宽度)。
使用这些动态处理它们
DynamicView.autoresizingMask = UIViewAutoresizing.FlexibleTopMargin .union(UIViewAutoresizing.FlexibleLeftMargin .union(UIViewAutoresizing.FlexibleRightMargin))