2013-12-19 26 views
1

我是iOS新手,我正在學習第一個教程。教程所跳過的一件事就是定位。我有一個列表,其中每個單元格都有一個圖像,旁邊有一些文本。至少在Interface Builder中是這樣。當我真正運行應用程序時,圖像出現在文本的頂部(即兩個屏幕的左側都有相同的確切位置)。在iOS應用程序中,我如何獲得2個元素坐在一起?

Interface Builder中

Interface Builder

正在運行的應用

Running App

我基本上想要什麼,在CSS行話來說,將是 「浮動:左」,或甚至只是每個元素的x/y座標的相對定位(即,如果它在runn時看起來相同/相似如故事板中顯示的應用程序),那會很好。

與所有的各種視圖屬性玩,我沒有找到任何東西,它將使意見......我能找到,將在Interface Builder中放置它們的屬性,但沒有這些設置似乎結轉到應用程序運行時,圖像/文本始終顯示在彼此的頂部。

我爲這個新手問題表示歉意......這可能是某種簡單/顯而易見的事情,不知何故我滑倒了。

回答

0

如果您對代碼感到滿意,我建議您手動將框架設置爲您使用CGRectMake(origin.x, origin.y, width, height)定義的CGRect。你也可以使用自動佈局設置來做到這一點,但是我發現編程定位元素給了我更多的靈活性,而作爲程序員,它比試圖找出界面構建器中的選項要容易得多。

iOS座標系是自上而下,這意味着y = 0是屏幕的頂部,y = 568是屏幕的底部(在iPhone 5上)。屏幕左側的X爲0。

座標系與它們所在的視圖有關。在您的情況下,您的元素位於UITableCell中,該座標系由渲染引擎給出其自己的座標系。所以,如果你希望你的形象從小區邊緣的左側(在CSS一拉)的頂部和10px的被10px的,你會設置它的框架,像這樣:

image.frame = CGRectMake(10, 10, 50, 50) 

...假設圖像是50x50。

1

如果您使用Xcode5進行測試,該應用默認使用AutoLayout功能。你爲這個佈局所做的約束似乎是錯誤的。如果你想用AutoLayout將視圖定位到正確的位置,你需要從蘋果官方網站上閱讀一些材料。如果你沒有太多時間學習,可以嘗試在沒有AutoLayout的情況下編輯xib。您可以在界面構建器的「文件檢查器」中禁用AutoLayout。

1

如果您是iOS開發新手(因爲我是),您應該熟悉AutoLayout,正如Eric的回答中所建議的。

如果你正在尋找一個快速解決問題的要求,所有的下列選項爲我工作:

  1. 選擇標籤,然後選擇橫向空間約束並刪除它。 Horizontal Space Constraint
  2. 選擇標籤並點擊cmd-plus(即cmd + shift + equals)。這將一次刪除所有的定位約束。
  3. 關閉AutoLayout。 Disable AutoLayout

還有其他方法可以解決我遇到的問題,但通常這個問題是不正確的AutoLayout約束。

相關問題