2014-03-27 55 views
1

我有一個UIView,它是一個uitableview的footerview。在運行時,用戶將腳本輸入到footerview中的uitextview中,該腳本應根據自動佈局中的高度約束來調整文本內容的大小。使用自動佈局的uitableview footerview的運行時擴展

視圖中的所有其他對象(標籤,圖像視圖)都有適當的約束來適應textview的擴展。但是,整體頁腳視圖的高度不會改變大小,並且不可能在tableview footerview高度上使用自動佈局。不過,

有沒有人有解決方案?謝謝

回答

0

您可能會嘗試在每次頁腳高度更改時再次設置頁腳視圖,以通知表應該更改頁腳高度。或使用插頁。從頁腳視圖中:

SetNeedsLayout() 
LayoutIfNeeded() 
ownertable.TableFooterView = this 
+0

請您介紹一下上述方法嗎?我所嘗試的是先設置頁腳,然後通過代碼添加約束。這在iOS 8中運行良好,但在iOS 7中它崩潰。似乎viewDidLayoutSubViews的tableviews實現不會調用super。請幫忙。 – GoGreen

+0

是的,在iOS 7中,每個控件的每個部分都不支持自動佈局。 – Softlion

+0

那麼你如何解決這個問題呢? – GoGreen

0

比較遺憾的是,看錯這個問題很久以前。您可以通過tableview的屬性tableFooterView直接訪問頁腳。

您可以做的是在xib或viewDidLoad:中創建默認頁腳。一旦你需要增加頁腳的大小,你可以從該屬性中取出UIView,並在必要時編輯它的框架,使其更大。

因此,請確保tableFooterView得到分配UIView,因爲它默認爲零。爲了使高度更高,您可以使用self.tableView.tableFooterView.frame = CGRectMake(whatever rect you need);

+0

該頁腳部分的編號是什麼? – user3099609

1

尚未找到實際的優雅解決方案,但我推遲了通過使用變通方法解決此問題: 設置視圖的框架用作頁腳儘可能大,你可能需要。在我的情況下,這意味着要給它60px的備用垂直空間。由於它是頁腳,下面沒有任何內容可以重新定位用戶,因此不會受到解決方法的影響。 頁腳視圖的內容固定在頂部,並且有足夠的空間在需要時展開。 爲了記錄:我的視圖是從一個nib文件加載的。 儘管從理論上講,界面生成器中的頂層視圖的大小僅僅是設計時間,運行時大小應該根據約束條件和生成的內在大小來計算,對於這種特定情況,我發現高度保持不變它在IB。

1

我們可以通過下面的代碼更改的頁腳視圖運行時的高度:

func methodToChangeTableViewFooterHeight() 
{ 
    var footerView:UIView = self._tableView.tableFooterView! as UIView 
    var frame:CGRect = footerView.frame 
    frame.size.height = self.heightCollectionCS.constant + 10 
    footerView.frame = frame 
    self._tableView.tableFooterView! = footerView 
} 

這裏,self.heightCollectionCS.constant是我們集合視圖的高度約束。 我們可以在那個地方使用文字內容高度。

相關問題