问题标签 [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 投票
3 回答
4954 浏览

swift - heightAnchor.constraint 不改变视图高度

我使用这段代码:

show功能工作正常,但hide功能不起作用,heightAnchor不起作用。

0 投票
0 回答
171 浏览

ios - NSLayoutConstraint 负乘数给出了意想不到的结果

我们正在使用XcenterandYcenter NSLayoutConstraint来定位subviewparent superview。由于我们需要保持位置比例,我们不能使用constant约束的值来定位它,它需要纯粹基于乘数。

subview可以是边界之外的位置,因此superview需要一个负乘数。问题是当我们应用一个负乘数(通过代码)时,子视图的位置会以一种意想不到的方式移动。使用自动布局公式似乎是可能的,但实际上并非如此。这是一个可视化:

在此处输入图像描述

设置宽度/高度约束后,我将 X 和 Y 设置如下:

只有当乘数为负时,我们才会得到意想不到的结果。

有没有人暗示负乘数发生了什么?我们被困在这个问题上好几天了......

0 投票
1 回答
5019 浏览

ios - 如何快速更新锚约束

我想在 iOS 中创建一个类似 android 的菜单。我正在使用布局约束来设置约束。当我尝试在按钮单击时更新图像的左侧约束时,我遇到了这个问题(它应该动画到单击按钮的位置)。谁能帮我?它应该支持横向和纵向。

我不想使用第三方代码,也不想使用NSLayoutconstraint.

横向图像 肖像图像

这是我的代码。

0 投票
2 回答
1073 浏览

ios - 如何使用约束从下到上为 UIView 设置动画?

我正在以编程方式创建 UIView,之后我将使用约束从下到上为该视图设置动画。但是动画不会显示在这个视图对象上。

0 投票
1 回答
73 浏览

ios - 最好在更改约束之前或之后调用 .layoutIfNeeded()

我有一个按钮,可以根据某些情况改变大小。我不需要完成动画,因为用户永远不会看到更改发生。有时,当从较小的尺寸切换回较大的尺寸时,按钮会卡在较小的尺寸上。我认为layoutIfNeeded()会解决问题。

问题是我应该在什么时候调用下面layoutIfNeeded()setCameraButtonToNormalSize()函数?

0 投票
1 回答
297 浏览

ios - 在 Swift 中剪辑到父视图的子视图

我正在尝试添加一个始终与其父级大小相同的子视图,以便在父级大小发生变化时始终调整大小。

我正在考虑从代码中添加(顶部、底部、前导、尾随)约束。

当我添加子视图时,将执行此代码:

但子视图大小保持为 0,并显示在屏幕的左上角。我不明白为什么它的大小为零,因为我设置了它的框架,也因为它具有设置其大小的所有约束。

检查员视图:

注意:父视图在左边,子视图(LoaderView)在右边

父视图 子视图

0 投票
1 回答
159 浏览

ios - 在 Swift 中向 NSLayoutAnchor 约束添加乘数

锚约束简化了添加约束,但情节提要中可用的乘数属性似乎不适用于所有类型的约束。

例如,根据此处的答案,您可以在视图中将标签居中:

但是,显然,虽然您可以设置长度约束的乘数,如下所示:

someView.heightAnchor.constraint(equalTo: heightAnchor, multiplier: 0.4)

您不能将类似的参数添加到 CenterX 或 CenterY 参数,可能是因为 Apple 认为这对某一点没有意义,尽管您可以在 Storyboard 中执行此操作,如本问题中所述。

将乘数添加到使点居中的约束以使该点与顶部的屏幕尺寸成比例的最佳方法是什么?

0 投票
1 回答
245 浏览

swift - 无法转换“NSLayoutAnchor”类型的值' 到预期的参数类型 'NSLayoutAnchor

我正在尝试为 UIView 编写扩展,以便更轻松地为视图设置锚点。

这个想法是写一个这样的 setAnchors 方法:

可以这样调用:

我收到以下错误:

无法将“NSLayoutAnchor”类型的值转换为预期的参数类型“NSLayoutAnchor”

在此处输入图像描述

我知道我可以给 topAnchor asNSLayoutYAxisAnchor等等,并给这个方法提供常量作为参数来使它工作,但我想知道是否有办法让它与这个 Anchor 结构一起工作?

0 投票
1 回答
37 浏览

ios - IOS SafeAreaLayoutGuide 横屏锚点

我一直在关注 Paul Hudsons 的 Hacking with Swift 教程,我正在完成项目 6,他以编程方式使用布局约束。我一直在仅使用 Interface Builder 完成此类任务,但我很想学习如何以编程方式完成它。

在他的教程中,我们有以下代码将 5 个 UILabel 添加到主控制器的视图中。

然后我可以手动添加约束:

如您所见,我将第一个标签的高度设置为 80。然后将 label1 的优先级设置为 999,并使其余标签遵循 label1 的高度约束。

这在纵向和横向模式下都可以正常工作。

人像模式1 横向模式 1

现在我将代码转换为使用锚。

我想我在这里遗漏了一些东西,因为

  1. 当应用程序处于纵向模式时,它会尝试填满整个屏幕
  2. 当应用程序处于横向模式时,label5 被切断。

人像模式 2 横向模式 2

我想我在使用锚点时在这里遗漏了一些东西?我猜是这个:

但我不确定如何使用锚模式来做到这一点。任何帮助将不胜感激!

0 投票
1 回答
55 浏览

swift - 带有布局锚的程序化 NSScrollView - 如何修复滚动?

相当多的关于以编程方式实现滚动视图的帖子,但我还没有找到适合这种情况的解决方案......在这里我将子视图添加到文档视图(所有内容都使用布局锚点布置),除了滚动。

我认为这里的问题是 AppKit 将示例中的约束解释为没有任何可滚动的内容,但我不知道为什么......