我正在設計一個swift
應用程序,顯示一張照片,地圖和內容 - 所有這些在UITableView
標題中。爲什麼我的約束在iPhone 5和iPhone 6上運行應用程序時使佈局不同?
當我運行在iPhone 5上的應用程序,它看起來像這樣:
黃色的領域是具有以下約束文本視圖:
和:
這看起來對iPhone 5的精美然而,當我在iPhone上運行6,我看到:
我不明白爲什麼這兩個不同意見。現在
,在我的代碼,在viewDidLoad()
我對方法的調用:
defineHeaderView()
,基本上用數據填充的報頭視圖(例如填充了用戶名,文本,照片)。
我也有這個代碼塊:
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
sizeHeaderToFit()
}
func sizeHeaderToFit() {
let headerView = myTable.tableHeaderView!
headerView.setNeedsLayout()
headerView.layoutIfNeeded()
let height = headerView.systemLayoutSizeFitting(UILayoutFittingCompressedSize).height
var frame = headerView.frame
frame.size.height = height
headerView.frame = frame
myTable.tableHeaderView = headerView
}
在storyboard
我定義headerview爲UITableView
內部的視圖:
你能解釋我爲什麼認爲兩個屏幕都不一樣?
爲了提供更好的洞察,這裏有其他方面的限制:
地圖:
和背景的照片即是在這裏:
有以下約束條件:
我猜問題是你的imageViews。 iPhone 5的屏幕比較薄,並且取決於您的圖像和約束的大小,(如果clipSubviews設置爲true/false),圖像看起來會非常不同。 – PeejWeej
您應該嘗試調試不同設備上的視圖層次結構,以檢查實際框架/約束是什麼 – PeejWeej
沒有足夠的關於視圖名稱和其他約束的信息。所以這只是一個假設: 您的視圖高度約束(黃色)與「大於或等於」相關。根據你的第二個約束,你的觀點的頂端應該是父母頂端的644點 - 這是一個靜態值。因此,對不同尺寸(高度)設備上的觀點將在高度拉伸。 –