使UIButton粘在UITableView的底部

时间:2016-12-24 15:37:06

标签: ios swift uitableview uibutton interface-builder

我有一个由原型单元组成的UITableView。我想使用Interface Builder将UIButton 放在底部的UITableView 中。

我在UITableView的页脚中添加了UIButton:

Footer

我为页脚视图添加了紫色背景,为UITableView添加了绿色背景颜色。在上图中,它显示了页脚底部的按钮。但是,这不等于UITableView的底部。

下面的GIF显示按钮位于单元格下方,但不在UITableView底部。我希望它出现在UITableView的底部 中。不是 下的UITableView。以下GIF显示此问题:

Button in tableview

我的问题是:如何使用Interface Builder在 UITableView 底部中设置UITutton 内部

这就是我想要实现的目标(来自Apple的ResearchKit):

desired goal

编辑:UIButton应该在UITableView中。将UIButton放在TableView外面并固定在其下面的建议不能实现我的目标。

5 个答案:

答案 0 :(得分:2)

您设置页脚宽度错误。设置固定高度,使按钮粘贴到特定高度(应固定为60px)

检查Demo Code是否有Storyboard结构和约束

Adding Header and Footer

答案 1 :(得分:1)

所以我不得不稍微调整它,但通过做以下事情让它发挥作用:

  1. 将UIButton拉出视图中的同一级别 tableview。
  2. 将tableview和按钮嵌入视图中
  3. 将上述视图嵌入另一个视图
  4. 将视图#3(固定视图)的边缘固定到superview
  5. Pin top,left&视图#2的右边缘(调整视图大小)以查看#3边缘。并设置一个相等高度的约束来查看#3。
  6. 在视图控制器中为等高约束设置出口
  7. IB中的观点层面看起来应该是这样的:

    IB Heirarcy screenshot

    现在在视图控制器代码中,您需要执行以下操作:

    1. 为键盘偏移值

      创建实例var
      files
    2. 设置键盘的通知和观察器将显示和 willHide

      var keyboardOffset: CGFloat = 0
      
    3. 在keyboardWillShow中,缓存键盘高度值。

      notificationCenter.addObserver(self, selector: #selector(keyboardWillShow(_:)), name:NSNotification.Name.UIKeyboardWillShow, object: nil)
      notificationCenter.addObserver(self, selector: #selector(keyboardWillHide(_:)), name:NSNotification.Name.UIKeyboardWillHide, object: nil)
      
    4. 在keyboardOffset var上创建didSet方法,并在每次设置时使用该值设置视图的高度

      if let keyboardSize = (notification.userInfo?[UIKeyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue {
      
          keyboardOffset = keyboardSize.height
      }
      
    5. 确保在keyboardWillHide

      中将偏移设置回0
      var keyboardOffset: CGFloat = 0 {
          didSet {
              resizingViewHeight.constant = -keyboardOffset
      
              UIView.animate(withDuration: 0.2) { 
                  self.view.layoutIfNeeded()
              }
          }
      }
      
    6. 每次键盘现在出现时,包含tableview的视图都会缩小,因此可以用它拉出内容,提供你正在寻找的缩小的tableview效果!

答案 2 :(得分:0)

将包含UIButton的视图添加到UIViewController所在的UITableView底部。赋予它附加到超视图的左侧,右侧和底侧的约束,并且可能是固定的高度。

然后将UITableView的底部约束附加到包含UIButton的视图顶部。

你应该得到你正在寻找的效果。

注意:对于按钮,您可以在超视图约束中给出居中的Y和X,使其保持居中。

答案 3 :(得分:0)

页脚始终显示在表视图的最后一个单元格之后,因此输出正确。

如果您想要tableview的按钮底部,则在层次结构中的tableview下面添加按钮而不是页脚。但它使你的按钮静止,这意味着你有多少细胞,按钮总是tableView的按钮,但它不像现在这样可滚动。

答案 4 :(得分:0)

我尝试了接受的答案,但无法正常工作。我发现,无论TableView的大小如何,页脚视图始终固定在屏幕底部(就像它是TableView的同级兄弟一样)。我最终遵循了这里建议的方法:https://stackoverflow.com/a/18047772/5778751的基本思想是,您可以通过编程确定TableView的高度,并根据结果来显示TableView内部的页脚或显示同级视图的TableView。