簡體   English   中英

如何創建動態彈出的子視圖並擴展其超視圖大小。 (在代碼中)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM