5

在我的故事板中,UIImageView我想将其放置在半透明导航栏下方的固定距离处。我将视图控制器的模拟顶栏设置为半透明栏,并且我现在的约束是“Top Space to Superview Equals 52”,位于栏下方 8 点。

但是,当视图旋转到横向时,导航栏缩小到 34 点,而图像视图仍然像纵向一样在 52 点。

无论导航栏有多高,我可以在 IB 中使用什么约束将图像视图放置在导航栏下方 8 点处?

谢谢!

4

5 回答 5

2

选择您UIImageView并按住 Control 拖动到顶部布局指南以创建约束。如果您不熟悉 Top Layout Guide,可以在左侧的结构视图中选择它。

于 2013-11-25T18:17:03.833 回答
1

正如 Nestor 指出的那样,您正在设置视图顶部边缘的顶部间距,而不是最近的邻居,即导航栏。您应该使用顶部布局指南设置顶部间距约束,以使其固定,无论尺寸等级和方向是什么。

为此,在文档大纲视图中,按住 ctrl 单击并从UIImageView到拖动一条线,然后从列表中Top Layout Guide选择。Vertical Spacing

在此处输入图像描述

于 2015-04-20T12:28:14.877 回答
0

在storyBoard 中同时选择imageView 和topBar。在屏幕的右下角,您会看到一个看起来像 H 的按钮:

在此处输入图像描述

选择它并选择“垂直间距”。将约束设置为 8 个像素,它应该可以工作。

于 2013-06-22T23:30:40.060 回答
0

Swift 4、iOS11+、SnapKit

imageView.snp.makeConstraints { (maker) in
   maker.top.equalTo(view.safeAreaLayoutGuide.snp.top).offset(8)
}
于 2018-12-07T02:25:11.733 回答
0

如果您使用旧的 Xcode,您将可以连接 topLayoutGuide或连接bottomLayoutGuide您的 ViewController。
但现在这种方式已被弃用。对于新操作系统的应用程序,您应该使用 safeAreaLayoutGuide视图。

IB 不支持区分操作系统,但您可以在 IB 中创建临时约束并从代码中添加实际约束:

在此处输入图像描述

之后在以下位置添加代码viewDidLoad

if #available(iOS 11.0, *) {
    label.topAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.topAnchor).isActive = true
} else {
    label.topAnchor.constraint(equalTo: self.topLayoutGuide.bottomAnchor).isActive = true
}
于 2021-03-24T08:04:54.313 回答