【问题标题】:Anchor a UIButton to the bottom of a UITableViewController's view将 UIButton 锚定到 UITableViewController 视图的底部
【发布时间】:2012-10-04 19:38:50
【问题描述】:

我有以下要求。当显示UITableViewController 的视图时,行数是可变的。在各行下方,应显示一个按钮。

当行数较少时,按钮应锚定在视图底部。

当行数较大时,删除按钮应紧跟在最后一行之后。

换句话说:

而不是:

到目前为止,我在这方面的最佳尝试涉及设置tableFooterView 并尝试使用UITableViewcontentSize 更新其高度,但我遇到了各种各样的问题。我可能会继续走这条路并寻求一些帮助,但首先我想知道是否有人有其他(更好的)解决方案。

结果必须与双倍大小的状态栏(例如在通话期间)很好地配合,我的目标是 iOS 6.0。我没有使用界面生成器。

【问题讨论】:

  • 很棒的图形,伙计。给你一票!
  • 嘿@Ben 我问了一个类似的问题。您可能想查看 stackoverflow.com/questions/21692880/uiscrollview-with-sticky-footer-uiview-and-dynamic-height-content 。你是怎么解决这个问题的?

标签: ios cocoa-touch uiview uitableview


【解决方案1】:

实现此效果的一种可能解决方案可能必须使用两种不同的解决方案。

  1. 如果行数意味着按钮将离开屏幕,然后像您一直在做的那样使用 footerView。

  2. 如果行数意味着按钮不会离开屏幕那么

    1. 将按钮添加到tableView
    2. 实现- (void)scrollViewDidScroll:(UIScrollView *)scrollView 并更新按钮的框架以从底部偏移。

从底部的偏移量可能遵循这样的一些逻辑

  1. yOffset = CGRectGetHeight(tableView.frame) - (CGRectGetHeight(button.frame) + somePadding)
  2. yOffset += tableView.contentOffset.y

这意味着按钮仍会随着滚动而上下移动,但您不必弄乱 footerView 的高度

【讨论】:

    【解决方案2】:

    在滚动视图中保留表格视图和按钮。将按钮保留在滚动视图的底部。为了使滚动正常工作,您可能需要设置滚动视图的 scrollEnabled 属性。有关详细信息,请查看此内容

    Scrolling a UITableView inside a UIScrollView

    编辑:

    yourView.autoresizingMask = UIViewAutoresizingFlexibleTopMargin ;

    查看此问题的已接受答案以获取有关使用代码实现支柱和弹簧的更多详细信息: UIView autoresizingMask - Interface Builder to Code - Programmatically create struts and springs - Swift or Objective-C

    【讨论】:

    • 但是当不需要滚动时,如何保持屏幕底部的按钮?
    • 通过在尺寸检查器中将按钮保持在滚动视图的底部。即使 uitableviewcell 的大小发生变化,滚动视图的最小大小也始终保持不变。
    • 我应该在问题中提到我没有使用界面生成器(我现在将更新它)。你能解释一下 IB 用来“将按钮连接到滚动视图底部”的 API,以便我可以尝试在代码中复制它吗?
    • 您可以设置视图的 autoResizingMask 来执行此操作。检查编辑。
    • 在一个scrollView里面加一个scrollView,往同一个方向滚动是自找麻烦
    猜你喜欢
    • 1970-01-01
    • 2021-07-26
    • 1970-01-01
    • 2019-11-13
    • 2018-02-27
    • 2014-09-10
    • 1970-01-01
    • 1970-01-01
    • 2015-04-15
    相关资源
    最近更新 更多