2015-11-17 23 views
-1

我已經做了一段時間的iOS,但是當涉及到動態隱藏/顯示元素時,我有點失落。 來自Android,我習慣於能夠簡單地將視圖設置爲可見性消失,但這在iOS上不存在。在iOS中顯示或隱藏動態內容的最佳方法

所以我們可以說我有以下情形:

enter image description here

基本上我想有一個表,但表不應該填充整個視圖控制器。相反,它應該留下可選的按鈕,多行標籤,或可能在底部(如果可見,這些應該固定,不滾動)。

解決此問題的一種方法是使用自動佈局和修改約束,如添加零高度約束。但是這會讓iOS殺死其他約束條件之一,這將使得很難再次改變它。對於標籤,我並不總是希望有一個高度限制,因爲它可能是多行的,並且應該取其所需的大小。 也許更容易跳過這裏的自動佈局,並修改框架,我不知道。

我的問題是:在這裏最好的方法是什麼? 有沒有其他方式做到這一點我沒有想到,還是我必須嘗試做我上面描述的?

我不是主要尋找代碼(代碼可以),但我更關心如何完成它的描述。 我想支持的iOS 7

回答

1

這個問題有各種各樣的解決方案和基於意見,但是當我不知道要選擇什麼以及什麼是「正確的事情」時,我會遇到很多這樣的問題。

所以,我認爲這裏最好的解決方法是使用自動佈局,你需要手動設置標籤的高度,但是你有一些方法可以實現,至少你可以使用它,如果你沒有成功詢問關於它的問題。使用框架,你將面臨同樣的高度計算問題,對吧?但是對於自動佈局,當需要隱藏消息時,只需將高度,垂直空間設置爲0。

您還可以使用優先級低於1000的約束,並且如果完全不需要它,則從消息(按鈕,標籤)中完全刪除約束。

例如,以您的佈局圖像,您可以使用子視圖製作UIView:button,label。頂端約束連接到UITableView,其他約束邊。標籤和按鈕將計算視圖的高度。這裏唯一的問題是標籤高度。

+0

感謝您的意見。它看起來像自動佈局可能是最好的辦法。過去我遇到的問題是,當我添加高度約束時,它會打破另一個約束。也許不同的優先級值可能對此有所幫助,或者我自己控制刪除/讀取其他約束。 – user3533716

+0

@ user3533716嘗試設置不同的優先級值或將高度約束設置爲> =或<=值有幫助。至少對於我來說,它比在運行時刪除代碼中的約束更容易。 –

0

所以在IOS假設兩個對象的背景是不透明的,只有在層次結構最前視圖將是可見和可交互的,一個簡單的解決辦法是改變不同確保它們位於視野後方,並且當你需要它們出現時使用view.bringSubviewToFront(mySubview)view.pushSubviewToBack(mySubview)使它再次消失。顯然,視圖將指您的視圖控制器的主視圖。

+0

感謝您的建議,但這會導致視圖與表格重疊。我不想遮掩tableview的底部,你仍然應該能夠一直滾動到底部。 – user3533716