无法计算约束的准确值

时间:2019-04-02 15:12:23

标签: ios swift uitableview uistackview

我正在计算表视图内部的堆栈视图的尾随约束。似乎计算没有给出确切的值。请参考下面的截图。我的计算/逻辑不正确吗?如何解决这个问题,以便我能获得确切的价值?

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    guard let cell = tableView.dequeueReusableCell(withIdentifier: "tableCellID", for: indexPath) as? TableViewCell else {
        fatalError("Can't find cell")
    }

    let profile = array[indexPath.row]

    if profile.isDisabled1 || profile.isDisabled2 || profile.isDisabled3 {

        let totalHiddenViews: Int = (profile.isDisabled1 ? 1 : 0) + (profile.isDisabled2 ? 1 : 0) + (profile.isDisabled3 ? 1 : 0)

        let singleViewWidth = (UIScreen.main.bounds.size.width - 32)/3 // 32 is sum of leading and trailing constraints

        cell.stackViewTrailing.constant = CGFloat(totalHiddenViews) * (singleViewWidth + 8)

    } else {
        cell.stackViewTrailing.constant = 8
    }

    cell.view1.isHidden = profile.isDisabled1
    cell.view2.isHidden = profile.isDisabled2
    cell.view3.isHidden = profile.isDisabled3

    return cell
}

Scraanshot

1 个答案:

答案 0 :(得分:1)

您还遇到2-cell layout问题。我的直觉是您的幻数之一是错误的,而我在这里看到的直接取决于可见单元格数的是此行。

cell.stackViewTrailing.constant = CGFloat(totalHiddenViews) * (singleViewWidth + 8)

我将从检查该常量的完整性开始,然后从那里开始,从取决于可见单元格数量的代码开始。