我正在爲iPhone和iPad開發應用程序。它支持iOS6和iOS7,並且僅使用自動佈局。iOS7自動撥號問題,在iOS7上正常工作的代碼
在過去的一週,當蘋果宣佈iOS8已準備好黃金時段時,我將其中一款iPhone和iPad升級到了iOS8。我還將我的XCODE撞到了版本6.我有第二個iPhone,我在iOS7上離開了。
我使用Xcode 6生成了新的可執行文件,當我在運行iOS8的設備上執行它們時,看到它們的屏幕布局搞砸了,但在iOS7上仍然很好。在我的物理設備和Xcode的仿真器上都是如此。
它花了很多的挖掘,但我很清楚現在發生了什麼,雖然我不知道爲什麼。
具體來說,某些自動佈局操作在iOS8上失敗,但它們在iOS7上很好。
涉及一個按鈕,用於我上,其大小等於該屏幕的尺寸的基礎視圖放置一些例子:
(1)如果我要求自動佈局來定位按鈕的水平中心(CX)等於到底層視圖的水平中心,結果是按鈕的水平中心被放置在底層視圖的左邊緣上。 (2)如果我要求自動佈局來使按鈕的寬度等於底層視圖寬度的50%,那麼它根本沒有寬度。
我能夠解決這些問題如下:
(1)請問自動佈局來定位按鈕的中心等於基礎視圖的左邊緣加上屏幕寬度的50%。 (2)我問自動佈局,使按鈕的寬度等於屏幕寬度的50%。
我正慢慢地將自己的方式與這樣的解決方法一起回溯到適用於iOS7和iOS8的自動佈局代碼。但我真的很想知道這裏發生了什麼。
它看起來像自動佈局不能確定底層視圖的大小,因此自動佈局計算,要求信息失敗。但它確實知道視圖的頂部和左邊的位置是如何根據這些數據進行計算的。
這是一個大型應用程序,我已經爲iOS6和iOS7編寫了數百行自動佈局代碼,這些代碼非常適合我。
我一直在調整和嘗試與iOS8三天的事情,我不聰明,當我開始時。
任何人有什麼建議或想法,可能是什麼問題在這裏?
我在同一條船上。無論如何,它看起來像你的基礎視圖的寬度是0開始寬度,因此,當你告訴你的按鈕的中心X是基礎視圖的中心X時,該按鈕出現在左邊緣。 – Zhang 2014-09-23 10:40:13
是的,從我目前看到的情況來看,一旦我開始在視圖上放置控件,我可以使用這些控件之間自動佈局關係的所有不同變體。也就是說,一個按鈕的水平中心可以與另一個按鈕對齊,沒有問題。 – Gallymon 2014-09-23 17:02:56
我應該提及,我不使用IB。我的所有自動佈局代碼都是通過直接構建NSLayoutConstraint/s完成的。總是這樣做,它在iOS7中完美運行。 – Gallymon 2014-09-23 17:09:50