2014-10-08 44 views
3

我想了解自動佈局如何在XCode6下工作,但是有很多神祕的東西從我的腦海中消失。 Autolayout和constraints philosofy可能很難學,但我意識到使用這些工具可以使生活變得更容易...使用自動佈局在UIScrollView內完全響應UIView

爲了您的信息,我需要建立一個帶有表格(消息)和視圖的聊天視圖包含一個嵌套在UIView中的文本字段(發送消息窗格),該字段又嵌套在UIScrollView中,所以當鍵盤出現在文本字段下時,我可以向上移動滾動視圖。

我讀了很多教程,並觀看了很多視頻,直到我找到有用的教程Using UIScrollView with Auto Layout in iOS。 Github中還有一個Xcode項目,內容是本教程解釋的內容。

在他的教程中,麥克Woelmer告訴

一個與建立 的UIScrollView的老辦法的大痛點是溝通的內容大小滾動視圖。如果UIScrollView中的 內容是圖片,則它 相當簡單,可以計算您的內容大小。但是,如果您的滾動視圖中包含按鈕,標籤,自定義 視圖和文本字段的混合包,它並不容易。需要長時間的代碼調整以便 反映設備旋轉的不斷變化和手機尺寸 的差異。

所以邁克解釋,以適應UIView的方式,使用佔位符,並迫使以適應設備的屏幕滾動視圖中的觀點,在viewDidLoad中創建一些NSLayoutConstraint:

的解決方法是外看滾動視圖並將約束附加到視圖控制器的主視圖。這不能在 接口生成器中完成,所以我們將不得不編寫一些代碼。接口 建設者仍然抱怨,但是,所以我們必須添加一個佔位符 寬度約束,以使它感到高興。

我試圖使用本教程的代碼的一部分爲我的項目,但我無法得到我的需要工作的視圖控制器(我總是得到錯誤)。 這是最好的方法嗎?我在正確的道路上嗎?

enter image description here

最後但並非最不重要的,我是意大利人,所以請原諒我的英語水平。如果事情不夠清楚,請給我留言。

回答

4

基本上你必須設置對齊和尺寸約束,以便Autolay爲你處理剩下的問題。如果你沒有提供足夠的信息,你會得到警告。如果您提供相沖突的信息,則會出現錯誤。

您基本上需要爲Autolayout提供足夠的信息來計算UIView框架屬性(即x位置,y位置,寬度,高度)。

例如,通過從頂部,右側,底部和左側邊緣提供距離約束,Autolay擁有足夠的信息來繪製UIView的框架矩形。但是,您也可以僅提供頂部和左側邊緣的距離約束,然後提供大小和高度約束。

你也可以配置你需要的關鍵約束,然後點擊'解決自動佈局問題',然後選擇'添加缺少的約束',雖然有時它不會給你你想要的。最好了解Autolayout如何完成我上面描述的內容。

如果你搞砸了,清除所有約束並重新開始通常會更容易。多做幾次,你會得到它的訣竅。

+0

謝謝,剛纔我正在努力完成這項任務,但有時我會對此感到非常沮喪。 – RikiRiocma 2014-10-08 20:08:30

+0

如果您有關於我的回答的具體問題,請立即提問! – believesInSanta 2014-10-08 20:18:39

+0

相信聖誕老人,我很感激你,因爲至少你回答了我,你的回答是清楚而詳盡的。我不想和你爭論,但是在沒有首先詢問的情況下,誰就低估了我的想法,例如增加更多的信息。 – RikiRiocma 2014-10-08 20:37:03

相關問題