如何复制本机iOS Reminder App的“添加任务”行布局行为?

时间:2018-08-21 19:08:40

标签: ios swift uitableview layout uiscrollview

如果提醒应用程序中的“添加任务”行位于可见区域的下方,则该行将作为叠加层粘贴在UITableView的底部;如果该行位于可见区域,则固定至最后一行。

提醒应用的屏幕截图:

我尝试了几种方法,但无法按照我的期望来工作:

  1. 使用父UIViewController,该父UIViewController的lessThenEqual约束将一个新添加的视图约束到底部,而UITableView的空白footerView的优先级较低的equal约束。这工作得很好,但是不能解决UITableView contentInset很小的问题(发生覆盖),新视图不会滚动UITableView,并且会覆盖UITableView的scrollIndicator。我也不喜欢新推出的UIViewController。
  2. 使用UITableView footerView并在发生滚动时变换其框架。以下代码是我的第一次尝试,但是该框架在footerView.transform = CGAffineTransform.identity之后没有立即更新,因此该框架不可用。缓存初始帧会导致意外的偏移和其​​他视觉故障。

    override func scrollViewDidScroll(_ scrollView: UIScrollView) {
       footerView.transform = CGAffineTransform.identity
       let delta = tableView.bounds.maxY - footerView.frame.maxY
       if delta < 0 {
          footerView.transform = CGAffineTransform(translationX: 0, y: delta)
       }
       tableView.bringSubviewToFront(footerView)
    }
    

0 个答案:

没有答案