2015-07-11 65 views
0

我有一個帶有單元格的標準tableView。iOS:無法在加載表格視圖時更新單元格中的視圖框架

在這些單元格中,有一個視圖需要在滾動時更改框架位置。

我做了一個更新的功能取決於其位置的tableview內的畫面(我使用convertRect(_:toView:)
滾動時,它的正常工作,我打電話UIScrollViewDelegate功能scrollViewDidScroll(_)內此功能。

我的問題是在加載單元格時設置視圖的初始位置。

爲此,我打電話給我在tableView(_:willDisplayCellforRowAtIndexPath:)中調用的相同功能,以便在準備顯示時設置視圖的框架。

當我在函數後面記錄視圖框架時,它具有期望的值,但是在屏幕上視圖位於錯誤的位置,就像顯示沒有刷新一樣。

我知道改變一個框架,而加載視圖可能會很棘手,導致這樣的事情,但我試過我可以想到和發現的一切,無論在哪個tableview/cell函數我試圖更新視圖的框架,它不會改變,直到我開始滾動。

對於記錄,我試圖在:

  • 主控制器tableView(_:willDisplayCellforRowAtIndexPath:)
  • 主控制器viewDidAppear()
  • 細胞layoutSubviews()
  • 細胞drawRect()

我也試圖與在約束自動佈局,但沒有任何關係。

我確信我錯過了加載單元格時更新框架的正確位置,但我無法弄清楚。

感謝您的幫助

回答

0

嘗試在

的cellForRowAtIndexPath設置的UITableViewCell subivews的初步框架:

+0

這太快了這個功能,電池的框架不被初始化但是 – Sylver

+0

你可以先初始化你想要的任何東西,然後調用tableView.reloadData(),並且cellForRowAtIndexPath將被再次調用到每個單元格 –

+0

不,它取決於單元格框架,它不是還沒有在tableView(_:cellForRowAtIndexPath :)。調用reloadData並不能解決任何問題,但是加載所有tableview是沒用的。在最好的情況下,不需要做任何重新加載。 – Sylver

相關問題