2015-02-09 17 views
0

我正在使用界面構建器來創建masterview詳細信息應用程序。然而, 當我運行該應用程序的單元格獲取未對齊iOS和界面構建器:放錯位置的視圖(例如UITableViewCell)

這裏是如何看起來既在模擬器和interace建設者:

enter image description here

關於如何解決此問題的任何建議?

我已經注意到了,這種情況也詳細信息視圖控制器,這就是爲什麼我選擇的「錯位視圖」的稱號:

enter image description here

回答

2

第一截屏的問題似乎是你沒有爲細胞提供足夠高的高度。因此,一個單元格中的某些視圖實際上出現在其下方的單元格的頂部。您需要修復您的表格視圖的rowHeight

在第二個屏幕截圖中,它看起來像您正在使用自動佈局,但您不是正在做自動佈局(您沒有限制)。您需要定位這些界面元素的約束。

0

首先檢查在Interface Builder的限制,並確保您的UITableViewDelegate被返回正確的heightForRowAtIndexPath:,然後報告。

0

在Interface Builder中,如果您選擇的是不大小正確,然後在右邊選擇(選項 + 命令 + )面板上的「大小檢查」選項卡中,這些視圖中的一個,如果您沒有定義約束條件,IB會提醒您:

所選視圖沒有約束。在構建時,將爲視圖生成明確的左,頂部,寬度和高度約束。

如果你沒有看到那種消息,你的屏幕快照顯示你可能有爲視圖定義的約束條件,這些約束條件等同於left/top/width/height約束。

問題是,當您轉換到具有不同寬度的實際設備時,視圖的佈局將不正確。

但是,如果您定義了自己的約束(例如,使用尾隨約束而不是寬度約束,使用底部約束而不是高度約束),您會發現視圖將更好地調整設備的實際尺寸。


在第一個例子中,如果您已經定義了約束條件,iOS 8將自動調整單元格的行高。例如:

V:|-[nameLabel]-[artistLabel]-[categoryLabel]-[priceLabel]-| 
V:|-[imageView]-| 
H:|-[imageView(100)]-[nameLabel]-| 
H:[imageView]-[artistLabel]-| 
H:[imageView]-[categoryLabel]-| 
H:[imageView]-[priceLabel]-| 

我在VFL中向您展示它,但您也可以在IB中定義它。關鍵點是增加約束,以便垂直高度現在是明確的(即,單元格高度將被調整以適應標籤)並且寬度不是硬編碼的,而是標籤將根據設備尺寸擴展/收縮以填充它。

從概念上講,在第二個例子中會出現完全相同的問題,即您沒有前後約束,而是IB默認使用前導和寬度約束,當您從設備到設備時,這不起作用。例如,如果您只是想要文本視圖,但要根據設備屏幕的大小調整它,則可能會遇到與以下VFL等效的限制。

H:|-[textView]-| 
V:|-[textView]-| 
相關問題