2017-03-06 57 views
0

我試圖向用戶顯示一個「這就是全部」的消息,如果用戶到達表視圖的底部,但不斷滾動,就像「你最新」消息鬆弛顯示在底部的聊天。但是,tableFooterView可以在表格視圖的最底部看到,並且不會隱藏。這應該怎麼做?swift如何顯示無法看到的頁腳,除非在達到底部後再向上滾動?

+0

是你使用'TableViewData'源添加footerView? – Dhiru

+0

@Dhiru我只是設置一個UILabel爲'self.tableView.tableFooterView' –

回答

1

我使用此解決方案:

let test=UILabel(frame: CGRect(x: 0,y: tableView.contentSize.height+180, width: tableView.frame.width, height: 50)) 
test.text="That's all" 
view.insertSubview(test, belowSubview: tableView) 
+0

你把這段代碼放在哪裏?我把它放在cellForRowAtIndexPath中,但我仍然無法在表格視圖底部看到標籤 –

+0

關於ViewController的viewDidLoad方法 – omarzl

+0

On viewDidLoad my tableView.contentSize.height = 0 –

0

添加footerview將不起作用,因爲tableview將調整其contentSize以顯示它。

您可以直接向UITableView添加子視圖,將其框架的origin.y設置爲大於contextSize.y。無論何時添加或刪除行,或添加或刪除節節或重新加載表,都必須重新調整視圖。

0

我面臨同樣的問題,上述方案並沒有爲我工作。

我結束了使用自動佈局約束。最初頁腳視圖的底部錨設置一個更大的constrant保持它看不見

然後使用開始滾動視圖代表的&結束拖動的方法來顯示&隱藏它

extension ViewController: UITableViewDelegate { 
    func scrollViewWillBeginDragging(_ scrollView: UIScrollView) { 
     guard let bottomAnchor = self.bottomAnchor else { return } 
     guard scrollView.contentSize.height > scrollView.frame.size.height else { return } 
     let heightOfInvisibleContent = (scrollView.contentSize.height - scrollView.frame.size.height) 
     print("height of invisible content: \(heightOfInvisibleContent), offset: \(scrollView.contentOffset.y)") 
     guard scrollView.contentOffset.y >= heightOfInvisibleContent else { return } 
     bottomAnchor.constant = moveUpConstant 
     UIView.animate(withDuration: 0.5) { 
      self.view.layoutIfNeeded() 
     } 
    } 

    func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) { 
     guard let bottomAnchor = self.bottomAnchor else { return } 
     bottomAnchor.constant = moveDownConstant 
     UIView.animate(withDuration: 0.5) { 
      self.view.layoutIfNeeded() 
     } 
    } 
} 

我分享了我的全樣本項目( FooterMessage)在我的回購https://github.com/ramjyroo/iOS-Expedition

相關問題