更改故事板约束关系

时间:2018-04-19 03:37:59

标签: ios swift uitableview

我无法在故事板上更改约束的关系。这就是表视图目前的样子。 enter image description here

单击更多按钮时,我希望表视图看起来像这样。 enter image description here

好的,我将底部约束从imageView拖到我的tableViewCell.swift文件中,并将其命名为 imageBottomConstraint 。我尝试了 imageBottomConstraint.relation = .greaterThan ,但是给我一个错误,说它只是一个get,所以关系是相同的,我试图将它改为更大。

以下是我感到困惑和困惑,所以我试图创建一个新的约束,但我并不真正理解 NSLayoutConstraint(item:,attribute:,relatedBy:,toItem) :,attribute:,multiplier:,constant:)。不要理解item,attribute,relatedBy,toItem&属性,请有人帮忙澄清。

我认为我的灾难代码会起作用,但不会崩溃。

@IBAction func showMoreBtn() {
    let item = imageBottomConstraint.firstItem
    let attribute1 = imageBottomConstraint.firstAttribute
    let relatedBy = NSLayoutRelation.greaterThanOrEqual
    let item2 = imageBottomConstraint.secondItem
    let attribute2 = imageBottomConstraint.secondAttribute
    let multiplier = imageBottomConstraint.multiplier
    let constant = 12 

    let newConstraint = NSLayoutConstraint(item: item, attribute: attribute1, relatedBy: relatedBy, toItem: toItem, attribute: attribute2, multiplier: multiplier, constant: 12)
}

因此,在创建约束程序时,您可以看到我不知道自己在做什么。非常感谢帮助。

2 个答案:

答案 0 :(得分:1)

您可以在TableView的heightForRowAt Cell Delegate中管理预期行为

/// Use this function to Set Height of TableCells
        func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat
        {
            /// Is index Path More Button is cliked ?
            if indexPath.row == selectedIndex
            {
                /// If yes
                return UITableViewAutomaticDimension
            }
            else
            {
                /// if No
                /// Provide a Static Height That will Set your requiremment
                return 160
            }
        }

selectedIndex 其中单击了更多按钮的索引,我的要求是扩展一个单元格一次,您可以使用数组来管理单元格需要扩展

答案 1 :(得分:0)

您可能无法使用正确的解决方案。我会使用UITableViewAutomaticDimension使用单元格可以扩展并适应内容的事实。 以下是一个可以帮助您解决特定情况的示例:

https://www.appcoda.com/self-sizing-cells/

这个想法将是:

  • 使用约束条件修复标签的高度
  • 当您点击更多按钮时,您将该约束设置为对yourConstraint.active = false不活动,并通过yourTableView.reloadRows
  • 之类的操作重新加载单元格