问题标签 [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 回答
2379 浏览

iphone - Creating NSLayoutConstraints in code

This is my first attempt at using constraints, so please excuse the elementary question.

I want to be able to set a series of constraints so that a subView is either less than 75% of the width of my view OR the width of my view. So if my subView's width is greater than 75% of the view's width then set it to be the full width. I want to do this to ensure the subView displays well on an iPhone and iPad.

Is this possible using constraints? I have set up two constraints, but how do I tell the constraints system which one to choose based on the width of my view, as I am not sure that this can be solved just using priorities?

Any help greatly appreciated as getting rather bogged down.

Dave

0 投票
1 回答
2588 浏览

core-animation - 通过添加和删除 NSLayoutConstraints 来制作动画,而不是调整常量

我有一个 NSButton,它的底部与其父视图齐平,我想动画它向上移动,使其顶部与其父视图齐平。

WWDC 2012 Session 228: Best Practices for Mastering Auto Layout 提到了两种动画布局更改的方法 (31:16),我正在尝试使用 CoreAnimation 技术。下面的示例确实正确地移动了 NSButton,但它是立即移动的,并且没有动画。

我可以添加和删除 NSLayoutConstraints 并让 CoreAnimation 弄清楚如何为更改设置动画吗?这似乎比我确定按钮的旧位置和新位置之间的距离要简单,然后将 NSLayoutConstraint 的常量调整该数量。

0 投票
1 回答
255 浏览

objective-c - 页面应用程序 + 自动布局 + 子视图在滚动时缩放

我已经在控制器上工作了 4 天,但我无法解决我的问题!

让我们来解释一下我的架构:

我有一个“Rootview”,其中包含一个 ScrollView 和 anImageView(它们都添加到 IB 中)

然后我有 4 个外部视图控制器。

我想要的是:将我的 4 个视图控制器放在我的滚动视图中(这工作正常,两个视图都添加到我的滚动视图中的代码中)并允许用户在视图之间滚动

当我滚动时,我有一个小动画将我的视图缩放到 50%,然后将它们重新缩放到 100%。

当我在 IB 中禁用“自动布局”时,一切都很好!我的动画和我的观点的位置。但是,我不能禁用它,因为我希望我的应用程序可以在 iPhone4 和 iPhone5 上运行。

我不知道如何实现我的约束以正确定位我的所有视图。我只是希望我的视图高度调整为 50 像素以适合 iPhone 4 屏幕。

这是我的 scrollViewConfiguration

我设置 viewController 框架的部分只有在我禁用自动布局时才有效

我希望你明白我想说什么...

对不起,我的英语不好...

普威尔

0 投票
1 回答
6287 浏览

ios6 - 如何使用自动布局约束使具有自定义宽度的按钮居中?

请看以下代码:

我遇到的问题是H:|-[start(100)]-|行不通。我想要的是一个宽度为 100 的按钮,以 X 轴为中心,并以默认边距连接到屏幕底部。一旦我删除它(100),这个按钮就会延伸到屏幕宽度减去默认边距。当我指定自定义宽度时,我认为自动布局系统无法计算出左右边距应该是什么。我得到一个Unable to simultaneously satisfy constraints.错误。我想这与 中的破折号有关H:|-[start(100)]-|,它需要具有流体宽度才能将start元素附加到superview,而不是默认边距。

关于我如何解决这个问题的任何想法?

更新(感谢 ghettopia):

这有效(注意我UINavigationController在应用程序委托中使用 a 并且inself.view.translatesAutoresizingMaskIntoConstraints = false被注释掉了):viewDidLoadTestController

正确的画面

伟大的。现在我得到一个蓝屏,按钮以 X 轴为中心,底部有默认边距,正如我想要的那样。但是,根据我所阅读self.view.translatesAutoresizingMaskIntoConstraints = false的内容,需要使自动布局工作。为了实现这一点,这也有效(请注意,我UINavigationController这次没有使用 a 并且self.view.translatesAutoresizingMaskIntoConstraints = false正在viewDidLoad使用TestControllerIS):

但这似乎不是一个合适的解决方案。我需要一个UINavigationController来创建我的应用程序结构。问题是当我不使用上述任何解决方案时,我会得到一个黑屏,中间有一个按钮死了(在两个轴上)。观点似乎被打破了: 黑屏

想法?我应该删除self.view.translatesAutoresizingMaskIntoConstraints = false并忘记它还是确实需要它?如果是,那我的代码一定有问题。

更新 2:

有趣的教程:iOS 6 中的自动布局:通过代码添加约束。作者不使用self.view.translatesAutoresizingMaskIntoConstraints = falsein viewDidLoad,仅在子视图上使用。

更新 3:

我想我可能已经通过转移self.view.translatesAutoresizingMaskIntoConstraints = falseinit方法而不是viewDidLoad. 虽然不知道为什么会这样,但屏幕现在看起来与屏幕截图相同,就像我最初的意图一样。这是更新的代码:

0 投票
3 回答
10245 浏览

xcode4 - 如何让 Interface Builder 在基于约束的布局中尊重自定义视图的内在内容大小?

XCode 4.5 中的 Interface Builder 尊重一些视图的 intrinsicContentSize,例如 NSButton,但我无法说服它在我自己的自定义子视图中尊重它。这会导致 IB 添加额外的约束,试图强制在 IB 中绘制布局,然后导致程序运行时不使用内在大小。

例如,考虑在窗口中居中的按钮,以及在窗口中居中的自定义视图……</p>

居中 NSButton 的 IB 约束

居中 NSView 的 IB 约束

可以看到自定义视图有四个约束,大概是因为IB不知道视图的intrinsicContentSize。您可以更改添加的额外约束,例如,您可以强制将其设置为宽度和高度,但不能删除它们。

我现在通过搜索和删除 awakeFromNib 中的额外约束来应对这个问题,但必须有更好的方法来做到这一点。

0 投票
3 回答
47155 浏览

objective-c - iOS 在设备旋转时更改自动布局约束

我想在设备旋转时修改布局约束。MyUIViewController由 2 组成,UIViews横向对齐,纵向对齐。

它确实有效,在中willAnimateRotationToInterfaceOrientation,我删除了所需的约束并用其他约束替换它们以获得正确的布局......

但是有问题,在旋转期间自动布局在willAnimateRotationToInterfaceOrientation被调用之前开始打破约束,那么当设备重新定向发生时我们打算在哪里替换我们的约束?

另一个问题是性能,经过几次旋转后,系统不再打破限制,但我的性能下降很大,尤其是在纵向模式下......

0 投票
1 回答
735 浏览

ios - iPad 上的 NSLayoutConstraint SIGABRT

应用程序在界面生成器中进行。iPhone 和 iPad 的独立故事板。项目在具有最新 iOs 的 iPhone 模拟器、iPad 模拟器、iPhone 4 上运行并正常运行,但是当我在 2012 年春季使用 iOs 5.1 的“新 iPad”上构建它时出现此错误。修复/解释?

0 投票
4 回答
4561 浏览

ios6 - 为什么 NSLayoutAttributeCenterX 与 NSLayoutAttributeWidth 是“无效配对”

我试图让自动布局管理器根据超级视图的宽度调整视图的中心点。我不明白为什么这是属性的“无效配对”(如崩溃和 NSInvalidArgumentException 所述)

有人可以解释为什么这是“无效配对”以及我应该如何解决这个问题?谢谢

0 投票
1 回答
8773 浏览

iphone - 如何使uiview约束无效

我想使代码中的 uiview 约束无效,以强制所有字段根据视图中的特定更改重新布局。

例如,假设我有两个 UILabel,它们被赋予了一个固定的 VerticalSpace 约束。在某些用户事件中,我正在调整顶部标签的大小。我希望能够强制约束使代码无效。

这是我第一次使用约束,我不明白如何从代码中做到这一点。我知道当设备旋转时,UIViews 上的约束无效。

0 投票
2 回答
3756 浏览

ios - UIView transitionFromView:toView: 和布局约束

[UIView transitionFromView:toView:...]使用布局约束的正确方法是什么?

我想在约束 toView 的超级视图中安装约束。在转换调用之前我不能这样做,因为 toView 还没有超级视图。(在调用之后但在运行循环进行之前也是如此。)等到完成块安装它意味着视图将具有动画而没有约束。