删除按钮和行之间不需要的空间 swift xcode

Posted

技术标签:

【中文标题】删除按钮和行之间不需要的空间 swift xcode【英文标题】:Remove the unwanted space between button and line swift xcode 【发布时间】:2020-04-11 12:46:57 【问题描述】:

我是 iPhone 应用程序开发的新手。

我正在设计这样的应用程序。在这个设计中,下面有两个按钮来删除按钮,在这两个按钮下面,有线条。你在这张照片中看到的。

我想要的是,当这两个按钮被某些条件隐藏时,我想将下面的行添加到删除按钮。如果这两个按钮可见意味着,那条线应该在这两个按钮的下方。不在删除按钮下方。

我在 TableView 的 cellForRowAt 函数中添加了以下代码。它不工作。

cell.line.frame = CGRect(x: 0, y:cell.btnDelete.frame.maxY, width: cell.line.frame.width , height: 1 ) 

任何机构都可以帮助我解决这个问题。

我已经添加了以下代码。

  func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat 
      return UITableViewAutomaticDimension

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat 


    return UITableViewAutomaticDimension

    dataTable.rowHeight = UITableViewAutomaticDimension
    dataTable.estimatedRowHeight = 100

【问题讨论】:

您正在使用 UITableViewAutomaticDimension,因此您需要 自动布局约束 来确定单元格的高度。 @matt 我知道 matt.then 为什么这个不需要的空间来了。?你能解释一下吗? 标签视图高度会根据文本长度自动变化。那没问题。当这两个按钮被某些条件隐藏时,就会出现问题。 隐藏按钮仍然有限制。当按钮被隐藏时,布局约束也需要改变。或者使用自动执行此操作的 UIStackView。请注意,您的问题根本不包含自动布局约束。除了你,没有人知道你在做什么。 【参考方案1】:

您必须使用一些棘手的方法来实现这一点。使用 Stack View 将显示、隐藏按钮添加到一个 UIView。将所有其他组件添加到另一个 UIView。将 UIStackView 添加到您的自定义单元格并添加约束,例如这个。

 NSLayoutConstraint.activate([
            stackView.leadingAnchor.constraint(equalTo: leadingAnchor),
            stackView.trailingAnchor.constraint(equalTo: trailingAnchor),
            stackView.topAnchor.constraint(equalTo: topAnchor),
            stackView.bottomAnchor.constraint(equalTo: bottomAnchor),
 ])

将 stackView 分布设置为 .Fill。

当您想要显示/隐藏按钮时,您可以从 tableview 单元格 stackView 添加/删除排列的子视图。如果您在 cellForItemAt 中显示/隐藏按钮,请确保在添加之前删除所有排列的子视图。

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

        cell.stackView.removeArrangedSubview(cell.viewOne)
        cell.stackView.removeArrangedSubview(cell.viewTwo)

        if isShowBuutons 
            cell.stackView.addArrangedSubview(cell.viewOne) //View with All other elements
            cell.stackView.addArrangedSubview(cell.viewTwo) //View with buttons
        else
            cell.stackView.addArrangedSubview(cell.viewOne) //View with All other elements
        
    

【讨论】:

你好,我已将视图更新为 stackview。我再次发现了一些其他问题。我在以下链接中提出了问题。你能解释一下吗? ***.com/questions/61182965/… 在哪里添加以下代码。 NSLayoutConstraint.activate([ stackView.leadingAnchor.constraint(equalTo:leadingAnchor), stackView.trailingAnchor.constraint(equalTo: trailingAnchor), stackView.topAnchor.constraint(equalTo: topAnchor), stackView.bottomAnchor.constraint(equalTo: bottomAnchor), ] ) 将此代码添加到 setSelected 函数中 您检查过发布的问题吗?有什么问题吗? 我正在检查它

以上是关于删除按钮和行之间不需要的空间 swift xcode的主要内容,如果未能解决你的问题,请参考以下文章

数据表分页按钮 - 删除不需要的空间

Android - 删除 TableLayout 行之间的空间

如何保持 Tableview 滚动以及如何在 Swift3 中删除原型单元和 tableview 之间的空白空间

条形按钮导航控制器隐藏 Swift

iOS swift 删除 UITableView 单元格分隔空间

ExoPlayer:删除播放按钮和时间轴行之间的冗余空格