【问题标题】:systemLayoutSizeFitting not returning proper size of viewsystemLayoutSizeFitting 没有返回正确的视图大小
【发布时间】:2020-11-06 04:46:02
【问题描述】:

我将视图控制器的视图设置为 UITableView 的标题。

var headerView = CommunityPostDetailTableHeaderViewController()

override func viewDidLoad() {

   // other stuffs

   headerView.view.frame = CGRect(x: 0, y: 0, width: self.tableView.frame.size.width, height: 100)
   headerView.delegate = self
   self.tableView.tableHeaderView = headerView.view
}
        

并使用这段代码根据视图的大小调整它的大小。

    override func viewDidLayoutSubviews() {
        super.viewDidLayoutSubviews()
        
        if let headerView = tableView.tableHeaderView {
            
            let height = headerView.systemLayoutSizeFitting(CGSize(width: tableView.bounds.width, height: 0)).height
            var headerFrame = headerView.frame
            
            // Comparison necessary to avoid infinite loop
            if height != headerFrame.size.height {
                headerFrame.size.height = height
                headerView.frame = headerFrame
                tableView.tableHeaderView = headerView
            }
        }
    }

我将这种技术用于我的两个表格视图。

  1. tableview 直接从视图控制器呈现,如下所示:
let playerController = VideoDetailController()
playerController.modalPresentationStyle = .fullScreen
playerController.video = video
self.present(playerController, animated: true, completion: nil)

在所有 iOS 设备上都能正常工作。

  1. 另一个是通过嵌入导航控制器来呈现的:
let communityPostDetailVC = CommunityPostDetailViewController()
communityPostDetailVC.delegate = self
if let indexpath = indexpath {
   communityPostDetailVC.communityPost = datasource[indexpath.row]
   communityPostDetailVC.indexpath = indexpath
}
let navigationController = UINavigationController(rootViewController: communityPostDetailVC)
navigationController.modalPresentationStyle = .fullScreen
self.present(navigationController, animated: true)

在 iPhone 5/5s/SE(1st gen)/6/6s/7/8/SE(2nd gen) 上无法正确调整大小。 我不明白为什么它不适用于较小的手机。您可以在下面的比较附件中看到空白。在较小的 SE 中,空间更大。

欢迎提出任何建议/想法。我现在一头雾水。

PS:我已经嵌套了视图控制器。 headerView 是一个视图控制器,它持有另一个视图控制器的视图。 FB 标志和下方的粉色标签是嵌套视图控制器的一部分。除此之外,其他一切都在 headerView 的视图控制器的视图中。

【问题讨论】:

    标签: ios swift uitableview uinavigationcontroller


    【解决方案1】:

    您正在使用全屏,但您的图像是固定大小的图像。粉色视图也固定大小。 也许它会造成问题。

    它实际上不是一个答案。给你一个建议。您可以再次查看您的代码。希望你能找到。

    快乐编码

    【讨论】:

    • 如果不是答案,请不要放在答案字段中。
    • 我试图帮助他。没有人回答,然后我得到-1哈哈。不错
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多