gpt4 book ai didi

swift - 为什么 UITableViewCell.layoutSubviews() 的 frame.width 为 600(通用 Storyboard宽度)而不是 320(特定 iPhone 设备)?

转载 作者:搜寻专家 更新时间:2023-11-01 07:28:38 26 4
gpt4 key购买 nike

我有一个通用 Storyboard(屏幕尺寸:600 x 600)的项目,其中包含一个覆盖 UITableViewCell 的类:

class MyTableCell: UITableViewCell 
{
...
}

显示此单元格的 UITableView 不是使用原型(prototype)单元格,而是将 MyTableCell 注册为一个类:

myTableView.registerClass( MyTableCell.self, forCellReuseIdentifier: "myCell" )

MyTableCell 然后覆盖 layoutSubviews:

override func layoutSubviews ()
{
super.layoutSubviews()
let width = CGRectGetWidth( frame )
}

太棒了!但是,返回的宽度是通用的 600,而不是我需要的特定于设备的 320。

请问我做错了什么?谢谢。

最佳答案

layoutSubviews() 将在单元格生命周期的不同时间被调用,并且随着它的移动可以有不同的值。当您第一次将它从 Storyboard 中取出时,它将具有您在 Storyboard 中看到的宽度。插入到 TableView 后,它将与 TableView 具有相同的宽度。

通常这不是问题。它会一次以错误的大小被调用,然后以正确的大小再次调用。但它在调试器中可能看起来很困惑。

如果您从未看到它更改为您期望的 320,这可能意味着您的 TableView 未针对 Storyboard中的自动布局进行正确配置,并且实际上在运行时以 600 像素宽绘制。

在该方法上放置一个断点,然后尝试将其输入到调试控制台以查看 TableView 大小是多少。这应该会返回很多关于 TableView 的信息,包括它的大小。

po superview

关于swift - 为什么 UITableViewCell.layoutSubviews() 的 frame.width 为 600(通用 Storyboard宽度)而不是 320(特定 iPhone 设备)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34163057/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com