问题标签 [nslayoutanchor]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
8621 浏览

ios - 如果设置锚点,如何获得视图的高度

我目前正在尝试访问我之前为其设置锚点的视图的高度。因此,例如,我searchTable在 ViewController 中设置了使用以下内容的左、右、上和下锚:

searchTable是我创建的一个类的对象,它继承自 UIView 并在其中有一个 UIImageView。我通过在 init 函数中使用以下内容来约束 UIImageView:

在哪里:

在 init 的 init 函数中searchTable,我尝试将角半径设置为图像大小的一半。我尝试使用self.frame.height,self.frame.size.heightself.bounds.height获取约束的.constant值,但都返回 0。self.heightAnchor

我认为有一个解决方案来解决这个问题,但我一直无法找到它。

0 投票
2 回答
465 浏览

ios - 将可视格式的约束转换为 NSLayoutAnchor API

几个月前我从这个 SO question 得到了以下扩展,我想把它翻译成 NSLayoutAnchor (或更详细的布局 API),原因很简单,视觉格式不支持指定安全区域布局指南。

链接中的扩展名是这个:

我的视图层次结构是:

UINavigationController -> 根视图控制器:UIPageViewController -> 第一页:UIViewController -> UIScrollView -> UIImageView

当我打电话bindFrameToSuperviewBounds()时,结果如下:

在此处输入图像描述

看起来大部分都很好。问题是图像视图位于导航栏下方,这是我不想要的。所以为了解决这个问题,我试图重写bindFrameToSuperviewBounds()为:

结果是这样的:

在此处输入图像描述

这次它正确地没有进入导航栏,但是...您可以看到它被拉伸了,这是我不想要的。

将可视布局 API 转换为可以考虑安全区域布局指南的正确方法是什么?

为了完整起见,设置滚动视图和图像视图的代码如下:

0 投票
1 回答
197 浏览

ios - 使用 NSLayoutAnchor.constraintEqualToSystemSpacingAfter 时的控制台警告

我正在使用NSLayoutAnchor'sconstraintEqualToSystemSpacingAfter来构建我的布局。

它确实有效,但在我激活约束后它会在控制台中引发警告:

不建议将 [自定义视图] 的右边缘与 [第二个自定义视图] 的右边缘对齐。为您的约束使用显式常量来覆盖它。

我怎样才能让这个警告消失?

0 投票
1 回答
56 浏览

swift - NSLayoutConstraint:在视图之间添加线

我正面临 NSLayoutConstraint 问题。我以编程方式创建了一个视图,并想在两个视图之间添加线。线已创建,但它被添加到视图中,如图所示: 在此处输入图像描述

我怎样才能在视图之间保持这些界限。这是我的代码:

这是我的 PathView 课程;

我知道添加线是因为视图中添加了这些活动约束。但我很困惑如何将它们添加到视图之外。任何帮助或建议将不胜感激。

0 投票
2 回答
264 浏览

ios - 如何在没有 IBOutlet 或标识符的情况下从 Storyboard 更新约束?

我有很多在情节提要中创建的视图,但我希望它们能够动态更新它们的约束,而不必每次都使用 IBOutlet。

我首先为要更新的视图的超级视图创建了一个自定义类,然后像这样更改其子视图的底部约束:

'NSLayoutAttribute.bottom' 似乎不是检查 Anchor 类型的正确方法。

如何检查要更改的约束类型?

我是否正确更新了要更改的视图的超级视图中的约束,而不是视图本身?

0 投票
1 回答
422 浏览

ios - 如何“添加”两个 NSLayoutDimensions?

添加两个NSLayoutDimension对象并没有真正意义,但我试图将容器视图的高度设置为具有动态高度的两个子视图的高度。

这是我正在尝试做的事情的可视化表示,在哪里dynamic view 1以及dynamic view 2两者都有动态高度,以及根据两个动态视图的大小的容器视图大小。

以编程方式,类似于:

但这显然会返回错误。设置这些约束的最佳方法是什么?

0 投票
1 回答
946 浏览

ios - tabBar.topAnchor 的奇怪布局

我有几个子视图

我尝试通过 layoutAnchor 进行布局。(此时我将 pageControl.bottomAnchor 锚定到 view.bottomAnchor )

所以它工作得很好,当我在适当的地方旋转设备 pageControl 夹子时在此处输入图像描述

但是,如果尝试锚定 pageControl.bottomAnchor = tabBarController?.tabBar.topAnchor 而不是 view.bottomAnchor 则在纵向上一切正常,但是当我旋转设备时会发生一些恼人的事情:pageControl 上升在此处输入图像描述

此外,当我从横向到纵向返回时,它保持在上部位置在此处输入图像描述

我猜问题出在 pageControl.bottomAnchor = tabBarController?.tabBar.topAnchor 字符串中,但我知道为什么?在横向仍然保留 tabBar 和 pageControl 仍然必须将其锚定到 tabBar 的 topAnchor。请也许有人知道这种行为是怎么回事?

0 投票
0 回答
84 浏览

ios - UITabBar 在旋转过程后更改视图层次结构。(或更改其在视图层次结构中的位置)

我有一个带有几个子视图的视图(只有一个特性,我将 tabBar 作为子视图添加到 VC 视图中)

当我旋转设备时发生了一些奇怪的事情(对我来说)。1)纵向方向一切正常。所有子视图都按应有的方式位于层次结构链中。(尤其是 UITabBar)在此处输入图像描述 ,但是在旋转过程到横向 UITabbar 与 UIView 分离之后,当然关于 pageControl 底部的约束:tabBarController?.tabBar.topAnchor 消失了。 在此处输入图像描述 为什么会这样?

0 投票
0 回答
7041 浏览

ios - 无法使用锚激活约束,因为它们没有共同的祖先

我在界面生成器中添加了一个名为 myView 的视图,如下面的代码所示,并将其作为子视图添加到主视图中,然后我以编程方式添加了三个按钮。在尝试应用锚约束之前,我已将这些作为子视图添加到主视图。我还将按钮设置为 translatesAutoresizingMaskIntoConstraints = false。有谁知道我在这里做错了什么才能得到以下错误?

无法使用锚激活约束,因为它们没有共同的祖先。约束或其锚点是否引用不同视图层次结构中的项目?那是违法的。

0 投票
1 回答
4072 浏览

ios - layoutMarginsGuide 似乎有点过分?

当我试图创建布局约束时,我读到了 NSLayoutAnchor 类。他们说:

笔记

UIView 不提供布局边距属性的锚属性。相反, layoutMarginsGuide 属性提供了一个 UILayoutGuide 对象来表示这些边距。使用指南的锚属性来创建您的约束

好的。但同时我为没有 UILayoutGuide 属性的布局边距属性创建了锚属性。

那么为什么我们需要 UILayoutGuide 对象呢?事实证明 UIView 确实为布局边距属性提供了锚属性?如果有人知道任何事情,我将不胜感激。