![](/img/trans.png)
[英]UIViewAutoresizingMask expands subview width beyond superview's bounds
[英]How do I create a SubView that pops up dynamically and expands it's superview size. (in code)
所以我目前有一個UIView
子類叫做:“ InputView
”有兩個子視圖,一個UILabel
和一個UITextField
。 我設置的方式是我可以更改標簽和文本字段占位符,以便此InputView
可以作為我的應用程序中任何輸入字段的模塊化組件(電子郵件,密碼等)。我所要做的就是創建我的故事板中的空UIView
,將它的類設置為InputView
,其余的以編程方式完成。
現在,我遇到了一個問題。 InputView
是普通的UIView
,它的約束是在故事板中設置的,但我想添加一個子視圖(一個表),當用戶編輯UITextField
時,它會動態顯示/消失。 每次表格出現時, InputView
在高度上展開,將其下方的所有內容向下推,然后InputView
消失。
我不知道該怎么做。 這是我想到的:
想法1:將表放在視圖中,為其添加所有必要的約束,並希望InputView自行擴展。 這導致表格位於InputView
的框架InputView
,因此由於某種原因無法響應用戶觸摸
想法2:更改InputView
的邊界,並將其高度擴展為表格的高度。 這不起作用,因為約束是在故事板中設置的,我無法以編程方式訪問它們
想法3:經過近5個小時的研究和嘗試失敗后,轉到StackOverflow,看看是否有人知道如何修復它。 (謝謝!)
您可以進行設置,以便可以通過編程方式更改故事板約束。
1)在故事板中,為inputView設置一個高度約束,並將其設置為當表不可見時有意義的值 - 可能在30左右。(您可能已經這樣做了。)
2)然后通過控制將該高度約束拖動到與其中包含inputView的視圖控制器對應的文件,為代碼創建一個插座。 對話框將提示您在代碼中為插座指定名稱。 稱之為inputViewHeightConstraint
。
3)然后在您的代碼中,當您想使inputView具有更大的高度時,將inputViewHeightConstraint.constant
設置為新值。 請注意,您需要引用.constant以設置約束的新高度。
首次為inputView設置高度約束時,請確保使其為“等於”約束(例如,其高度等於30),而不是“大於或等於”約束。 即使后者更有意義,因為你將在代碼中將其更改為更大的價值,我發現這種方法存在缺陷。 使它成為一個直接的“等於”約束更加干凈。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.