为什么我的约束在iPhone 5和iPhone 6上运行应用程序时使布局不同?
我正在设计一个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
内部的视图:
你能解释我为什么认为两个屏幕都不一样?
为了提供更好的洞察,这里有其他方面的限制:
地图:
和背景的照片即是在这里:
有以下约束条件:
请删除UILabel的顶部约束。
当我删除顶部的约束,然后我的'UILabel'进入屏幕的最顶端... – user3766930
我不知道这是否是一个有效的答案,但它会是一个*更好*答案,如果你添加一个解释*相关为什么*这将解决这个问题。 – dfd
我刚刚在原始问题中添加了有关约束的更多信息 – user3766930
我猜问题是你的imageViews。 iPhone 5的屏幕比较薄,并且取决于您的图像和约束的大小,(如果clipSubviews设置为true/false),图像看起来会非常不同。 – PeejWeej
您应该尝试调试不同设备上的视图层次结构,以检查实际框架/约束是什么 – PeejWeej
没有足够的关于视图名称和其他约束的信息。所以这只是一个假设: 您的视图高度约束(黄色)与“大于或等于”相关。根据你的第二个约束,你的观点的顶端应该是父母顶端的644点 - 这是一个静态值。因此,对不同尺寸(高度)设备上的观点将在高度拉伸。 –