[英]AutoLayout on Xcode7
我很難理解Autolayout以及它如何對除我以外的其他所有人顯着起作用。 問題是,當約束最終以一種分辨率(例如,iPad)為我工作時,它們不能滿足iPhone4s之類的另一種要求,因此,這可能導致約束沖突,或者根本無法滿足我的要求(例如,該按鈕將在iPad上的文本字段附近顯示,而在iPhone上不是很靠近)。 我已經閱讀了Raywenderlich的Adaptive Layout教程以及Steven Lipton的有關Autolayout(Practical AutoLayout)的書 ,仍然遇到很多麻煩。 請幫幫我。 它是如此令人沮喪,以至於我想完全放棄編碼並最終成為和尚之類的東西... x(
編輯
因此,為進一步幫助您,我將在一些快照的幫助下解釋某些問題對我不起作用。 我最初的想法是顯示4個視圖,每個視圖包含一個文本字段,按下特定按鈕,這些字段將通過CoreAnimation過渡。 ViewController的視圖在背景中具有一個圖像,一個后退按鈕,4個視圖,一個進度條和一個用於顯示每個視圖的按鈕。 問題如下; 盡管整個視圖在模擬器上似乎是合適的,但我可以在xcode的終端中看到沖突。
具有所有元素的圖像:
有沖突的圖片:
但是以某種方式,如果我解決了沖突,則自動布局將無法在所有設備上正常運行。 例如
沒有沖突,但是在iPhone4s的文本字段中隱藏了下一個按鈕:
與iPad一樣,沒有任何沖突,並且可以非常方便地使用“下一步”按鈕:
我該如何處理才能在所有設備上相同且連貫地工作。 請幫忙謝謝。
要了解的一件事是,對於大小差異很大的屏幕,AutoLayout不能解決您的所有問題(而且我仍然覺得尺寸類使用起來很麻煩)。 我通常堅持將兩個不同的xib用於電話和平板電腦,並連接到同一視圖控制器。 而且,如果可以的話,請放棄對iOS 7的支持,這將消除許多與AutoLayout有關的麻煩。
編輯
一定要使用自動布局 。 我所說的只是通常最好是使用兩個不同的xib,以實現截然不同的分辨率,但是當然兩者都使用自動布局。
我想從自動布局的經驗中分享幾件事。
現在,關於您的問題:出現鍵盤時,您都可以向上移動視圖(相對於鍵盤的高度。如果您要在不以編程方式更改約束的情況下實現此目的,則此答案將為您提供幫助。否則,如果您已正確添加了約束,而不是create和IBOutlet,最頂部元素的top約束,並從該約束的常量中減去鍵盤高度(150);當鍵盤消失時,還需要在該約束的常量中添加鍵盤高度(150)。
盡管自動布局可以幫助管理它,但下一個按鈕被鍵盤隱藏的問題與自動布局沒有直接關系。 問題很簡單,就是您在屏幕上使用的空間超過了可用空間。
有幾種方法可以解決此問題:
您可以將內容嵌入滾動視圖中,以便用戶在滾動視圖的內容超過可用高度時可以上下滾動屏幕。 自動布局將在這里有所幫助:您將在滾動視圖的底部到底部布局指南中設置一個約束,為該約束添加一個出口,並且在代碼中,您可以觀察鍵盤的隱藏/顯示/更改通知並調整該約束的常數
您可以調整布局,以便即使在鍵盤向上的情況下也始終可見,而無論鍵盤是否向上都不會改變任何位置。 這意味着您不會占用鍵盤會出現的任何空間
您可以根據鍵盤的存在動態地調整布局。 這會將第一個選項中的約束與其他約束組合在一起,以在該約束移動時將其移動。
在執行任何操作之前,請考慮一下您希望事情在不同情況下的外觀如何。 然后建立將給出此結果的約束。 自動布局無法為您猜測您要做什么,您需要對所需布局有一個精確的了解。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.