簡體   English   中英

如何使用AutoLayout在UIScrollView中設置UITextView

[英]How to set a UITextView in a UIScrollView with AutoLayout

如果這已經在其他地方得到了解答,請原諒我,但是我找不到關於此的話題:

我有一個具有以下層次結構的VC:

在此處輸入圖片說明

我希望ContentView元素在ScrollView中滾動。 我在textView中有很多定義,有些定義長於其他。 以前,只有較長的定義會滾動,較短的定義則不會滾動,但是由於我遇到了自動布局沖突,因此最后無法單擊鏈接。 我將ScrollView限制為View,將ContentView限制為ScrollView。 我還從主視圖中獲得了ContentView約束的equalWidth和equalHeight。 為了使該解決方案有效,我不得不將ContentView的高度設置為1000 pts,這樣就不會截斷更長的定義。 唯一的問題是,現在所有的定義都在滾動(甚至不需要滾動-沒有足夠的文本顯示在屏幕上)。 用戶可以向下滾動並看到足夠的空白區域來覆蓋屏幕,具體取決於定義的簡短程度。

我的問題是:如何排列約束,以便較長的定義在需要時滾動而較短的定義則不需要-如何動態設置約束?

謝謝

如果我正確地理解了您的聲音,聽起來您在設置scrollView的內容時遇到了問題,以便它可以在應有的狀態下滾動,而在不應該的情況下不滾動。 正確? 然后(假設您的約束設置正確),應該根據內容視圖的大小通過autoLayout設置scrollView的contentSize。

嘗試設置屬性以動態控制內容視圖的高度。 在您的ViewController中,創建您的屬性:

@property (nonatomic, strong) IBOutlet NSLayoutConstraint *contentViewHeight;

然后,無論您在何處設置標簽文本,都應計算新的高度,並根據此高度更新約束。 作為參考,這是一個有關如何確定標簽中文本高度的問題。

達到高度后,即可按以下方式進行設置:

self.contentViewHieight.constant = // Updated Height
[self.view setNeedsUpdateConstraints];

希望對您有所幫助。 以我自己的經驗,自從將UIScrollView更新為使用AutoLayout的方式以來,我一直在限制使用UIScrollView。 我主要使用UITableView和UICollectionView代替它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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