Xcode模拟器10.5英寸表行位置错误

时间:2018-08-28 10:29:24

标签: ios swift uitableview

告诉我是不是该bug?我在开发人员的生活中创建了许多UITableView,但以前从未见过。

我在Storyboard中创建了具有UITableViewCellUILabel的自定义UIButton

class MyCell: UITableViewCell {

    @IBOutlet weak var title: UILabel!
    @IBOutlet weak var button: UIButton!

    var row: Int? {
        didSet {
            guard let row = row else { return }

            title.text = "row number: \(row)"
            button.tag = row
        }
    }

    @IBAction func onCellClick(_ sender: UIView) {
        print(sender.tag)
    }
}

还有我的UITableViewController

class ViewController: UITableViewController {

}

extension ViewController {
    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 30
    }

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! MyCell
        cell.row = indexPath.row
        return cell
    }
}

按钮与单元格contentView的完整大小对齐。

如果我在任何设备和模拟器上运行此代码,一切都会正常运行。当我在10.5英寸模拟器上运行此代码时,出现问题。当我单击单元格按钮print(sender.tag)时,我打印了两个标签值:第一个正确单击了我,第二个最后一个可见的单元格在屏幕上。

当我将按钮大小设置为甚至1 px偏移量时,我发现一切都像灵符一样!当我将按钮拉伸到contentView大小时,为什么会有这么大的问题?你能解释一下吗?我感谢每一个想法,评论和解释!

1 个答案:

答案 0 :(得分:1)

在Xcode 9.4.1上工作正常。如果您使用的是旧版本,请更新Xcode,然后再次检查。