我正在开发一个使用几个UITableView
作为弹出窗口的应用程序。我在自定义单元格上设置了标签,并且正在使用大小类来在iPad上查看时放大字体大小。字体的大小在弹出框上不起作用。无论我使用哪种设备,它都遵循默认字体大小。如果我使用相同的单元格并将其显示在不是弹出框的UITableView
中,则字体会根据显示它的设备进行调整
这是我的自定义单元格。这很简单,只需一个标签即可。
这就是我设置字体的方式。
如您所见,我将wRhR的字体设置为比默认字体大得多。
在iPad上运行时,这是显示表格时单元格中的字体大小。
这是弹出窗口中单元格中的字体大小。
如果我将默认字体大小调整得更大,它将反映在弹出窗口中。这是将默认字体大小设置为30时的样子。
在弹出框上使用时,如何获得UITableViewCell
标签来遵守wRhR size类的字体集?
添加此内容后,我发现一个不一致之处。在此方法使用的弹出窗口上,弹出窗口顶部和表格之间有大量空间。看起来像这样:
使用没有自定义单元格的表视图显示弹出框看起来像这样。
我认为顶部的空白区域是导航栏。如果可能的话,我希望它看起来像第二张图片。
另一个编辑:我想通了。将其添加到弹出式代码中即可对其进行修复:
navController.setNavigationBarHidden(true, animated: false)
答案 0 :(得分:1)
一种选择是使用自定义UINavigationController
:
class PopoverNavController: UINavigationController {
var customTraitCollection: UITraitCollection?
convenience init(rootViewController: UIViewController, traitCollection: UITraitCollection? = nil) {
self.init(rootViewController: rootViewController)
customTraitCollection = traitCollection
}
override var traitCollection: UITraitCollection {
if let customTraitCollection = customTraitCollection {
return customTraitCollection
}
return super.traitCollection
}
}
您可以像这样使用它:
let storyboard = UIStoryboard(name: "Main", bundle: .main)
guard let popoverController = storyboard.instantiateViewController(withIdentifier: "PopoverController") as? PopoverController else {
return
}
// Here we set the override trait collection
let navController = PopoverNavController(rootViewController: popoverController, traitCollection: traitCollection)
navController.modalPresentationStyle = .popover
let popover = navController.popoverPresentationController
popoverController.preferredContentSize = preferredContentSize
popover?.sourceView = sourceView
popover?.sourceRect = sourceRect
popover?.permittedArrowDirections = .up
present(navController, animated: true)
这样,popover控制器将获得与其父代相同的特征集。如果此特征集合不符合您的需求,您还可以指定一个自定义特征集合,如下所示:
let customTraitCollection = UITraitCollection(horizontalSizeClass: .regular)
let navController = PopoverNavController(rootViewController: popoverController, traitCollection: customTraitCollection)