问题标签 [nslayoutconstraint]

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 回答
682 浏览

ios - NSLayoutConstraint constraintWithVisualFormat 不能引用 superView

这是一些代码:

为什么它最终看起来像这样?我的 superView 有什么问题吗?

混乱约束的图像]

这是我的包含视图的设置方式: 包含视图的 IB 设置

0 投票
1 回答
13799 浏览

ios - 带有 iOS 自动布局约束的 UIScrollView:子视图的大小错误

我正在尝试在代码中生成视图。这是我的视图对象的层次结构

  • UIScrollView
    • 界面视图
      • 用户界面按钮

ScrollView 应该与窗口大小相同。按钮应尽可能大。我正在使用 iOS 自动布局,所以我所有对象的约束字符串看起来像这样

我还为每个对象设置translatesAutoresizingMaskIntoConstraints了。NO

问题是按钮只获得默认的按钮大小。它的父视图对象 (UIView) 仅获得其子视图所需的大小。

在此处输入图像描述

红色:UIScrollView / 黄色:UIView

如何强制这些视图与滚动视图一样大?

当我使用 UIView 而不是 UIScrollView 时,一切都很好......

这是一些代码:

更新: 我真的不知道,为什么会这样。如果您在 IB 中设置视图,连接插座并在代码中实例化视图,则滚动视图的行为类似于普通视图(垂直反弹)。它的 contentSize 计算不正确。更多在这里。但是如何正确地做到这一点?

0 投票
1 回答
918 浏览

ios - NSLayoutConstraint - 超级视图的动态高度

我在自定义 UITableViewCellself.username, self.postText, self.containerView中有三个视图:另外两个的超级视图在哪里self.containerView。我希望它像这样布置:

我在单元格的 init 方法中尝试了以下 NSLayoutConstraint:

它目前在没有任何日志的情况下崩溃。正确的 NSLayoutConstraint 应该如何看?

0 投票
2 回答
3287 浏览

ios - 自动布局阻止我更改视图的中心

我的应用程序的一个功能是自动裁剪图像。

基本思想是有人会为一张纸拍照(想想:收据),然后在确定纸张的边界后,图像可以自动裁剪。

我可以使用 OpenCV 确定纸张的边界。所以,接下来我要做的是更改每个指南的“中心”属性(只有 2 条水平和 2 条可以手动拖动的垂直“线”)。

然后,在我拨打所有电话以更改 4 个指南中的每一个后不久的某个时间,出现了其他东西并再次设置了“中心”。(我已经覆盖了“setCenter”来证明这一点)。该中心似乎被此重置:[UIView(Geometry) _applyISEngineLayoutValues]

我不知道为什么会发生这种情况,或者如何阻止它,但它可能与约束有关。我的观点是一个简单的 UIButton。当用户用手指点击并拖动它时,会调用一个动作例程,它只会改变中心。这行得通。

但在另一种情况下,我提出了一个 UIImagePickerController。在他们选择图片后,我确定纸张边界,更改“指南”中心,然后在“_applyISEngineLayoutValues”上将它们全部重新设置。

知道在这种情况下发生了什么吗?或者我如何设置视图的中心,并让它真正保持不变?

0 投票
1 回答
679 浏览

ios - 我可以使用 NSLayoutConstraints 来保持 UIView 的子视图等间距,而不管以后添加或删除子视图数组吗?

我想要一个 UIView ,每次我从它的subviews数组中添加或删除子视图时,无论哪个子视图碰巧在数组中仍然是等距的。

例如,如果我有子视图 a 和 b 间隔 10 个点,如下所示:

[a]-10-[b]

然后添加一个视图 c,其中的视图subviews现在应该像这样自动布置:

[a]-10-[b]-10-[c]

但是,如果我现在删除视图 b,则 a 和 c 之间的差距应该再次更新为 10 个点:

[a]-10-[c]

我知道我可以使用 NSLayoutConstraint 在两个已知视图之间创建这种类型的约束,我想我也可以设置一个 KVO,每次数组更改时,我都可以循环遍历所有子视图并重新应用约束,但我想知道如果有一种自动的方法。

0 投票
0 回答
632 浏览

macos - 如何在 NSScrollView 中设置 NSLayoutConstraint?

我是新手NSLayoutConstraint

我想以NSScrollView编程方式管理内容。最后,我想做的是创建一个NSScrollView带有方法的子类,该方法- add:(NSView *)aView将在其他方法之后添加并在必要时aView扩大。documentViewNSScrollView

(所有这些都适用于 OSX)我猜它存在但找不到它,所以如果有人知道在哪里可以找到它,我就在;)这是一张可以帮助您理解的图片: 在此处输入图像描述

我的计划是使用NSLayoutConstraints. 约束将是:

  • view 1,view 2等之间的垂直间距相等
  • documentView高度应适应 , 等的高度view 1view 2和。
  • documentView在andview 1和 last之间有一些固定的垂直边距view
  • view 1, view 2, 等是右对齐的

所以,让我们来回答我的问题:我从添加开始view 1(我会在后面看到)。我做了以下事情:

  • theScrollView是我的NSScrollView
  • newSubview是我要添加的视图;就图片而言,它是view 1

    /li>

但是,它不起作用,框架theContainer仍然存在(0,0,0,0)

我是新手NSLayoutConstraints;我错过了什么?

0 投票
1 回答
6833 浏览

ios - 程序化 NSLayoutConstraint 动画问题

所以我正在尝试为一些布局约束设置动画并且运气不佳,我只是什么也没看到,然后我收到一条错误消息,说明它如何不能同时满足所有约束等。

我正在使用一个名为PullableView的类,它的动画使用旧样式[UIView commitAnimation],所以我将它子类化并添加到我的代码中,我认为这将用于动画约束......没有这样的运气并试图对其进行动画处理,甚至让它做很多事情任何事情都被证明是困难的,我只是得到“无法同时满足约束”。问题是我对这个约束业务相当陌生,所以我不知道从哪里开始。

这是错误,另一个几乎相同,但对于centerY。

"<NSLayoutConstraint:0x7c8a3a0 StyledPullableView:0x905a9b0.centerX == UIView:0x9054680.centerX>", "<NSLayoutConstraint:0x7c6b480 StyledPullableView:0x905a9b0.centerX == UIView:0x9054680.centerX + 128>"

我当然会[pullRightView setTranslatesAutoresizingMaskIntoConstraints:NO];在调用这个之前

任何帮助表示赞赏。

0 投票
4 回答
9180 浏览

ios - iOS自动布局:表格视图单元格的动态高度

我有一个带有一堆单元格的表格视图(自定义单元格,只有它的内容视图)。

tableView:cellForRowAtIndexPath:我将一个预定义的 UIView(它有几个子视图)添加到自定义单元格的内容视图中。我之前为 UIView 及其子视图设置了所有约束。

最后但同样重要的是,我为我的自定义单元格(超级视图)和之前添加的 UIView(子视图)的内容视图设置了垂直和水平约束。

约束字符串如下所示:

不幸的是,我仍然得到所有表格视图单元格的默认高度。我想知道是否有办法让自动布局根据内容大小自动计算高度。

0 投票
1 回答
194 浏览

objective-c - Objective-c 中是否提供字符串版本的变量名?

我正在观看去年关于自动布局的 WWDC,第 228 次会议。有以下代码:

字符串值“previousView”和“view”如何在这里使用?该方法实际上可以从名称中计算出对象吗?

TIA 标志

0 投票
2 回答
334 浏览

objective-c - 如何在 Xcode 中编辑/修改 NSLayoutConstraint?

我将一个选项卡视图拖到我的自定义视图中,并设置它的框架。Xcode 会自动生成几个 NSLayoutConstraint 对象,这些对象将在自动布局期间决定其框架。

如上所示,一个约束,它指示选项卡视图的边缘与其超级视图的右边缘之间的距离。

但是,我不想要这样的约束。我想要的是一个约束,它指示选项卡视图的右边缘与其子视图的左边缘之间的距离。OR,标签视图本身的宽度。

我应该怎么做?

顺便说一句,我尝试删除约束,但 Xcode 立即生成了这个约束。因此我无法添加一个(实际上我也不知道如何添加一个)。