【发布时间】:2017-06-29 07:48:18
【问题描述】:
我正在设计一个 swift 应用程序,它显示照片、地图和内容 - 所有这些都在 UITableView 标题中。
当我在 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 中,我将标题视图定义为UITableView 内的视图:
你能解释一下为什么两个屏幕上的视图不同吗?
为了更好地了解情况,以下是其他限制:
地图:
以及这里的背景照片:
有以下限制:
【问题讨论】:
-
我猜问题出在你的 imageViews 上。 iPhone 5 的屏幕更薄,并且取决于图像和约束的大小(以及如果 clipSubviews 设置为 true/false),图像看起来会非常不同。
-
您应该尝试调试不同设备上的视图层次结构,以检查实际的框架/约束是什么
-
关于视图名称和其他约束的信息不足。所以这只是一个假设:您的视图高度(黄色)的约束与“大于或等于”相关。根据您的第二个约束,您的视图的顶部应该比父母顶部低 644 点 - 这是一个静态值。因此,在具有不同尺寸(高度)的设备上,您的视图将在高度上被拉伸。
-
伙计们,我添加了有关我的约束的更多详细信息,希望它能帮助您理解我的问题
-
文本字段的顶部被限制在视图的顶部。它应该被限制在地图视图的底部。
标签: ios swift uistoryboard nslayoutconstraint layoutsubviews