当前位置: 首页 > 知识库问答 >
问题:

为什么忽略NSLayoutConstraints?

章绪
2023-03-14

我对iOS布局约束的机制有误解。请参阅下面列出的我放在viewDidLoad中的代码。

    var btn = UIButton()
    btn.setTitle("i am a button", forState: UIControlState.Normal)
    btn.setTitleColor(UIColor.blackColor(), forState: UIControlState.Normal)
    btn.backgroundColor = UIColor.lightGrayColor()
    btn.sizeToFit()

    view.addSubview(btn)

    view.addConstraint(
        NSLayoutConstraint(item: view,
            attribute: NSLayoutAttribute.CenterX,
            relatedBy: NSLayoutRelation.Equal,
            toItem: btn,
            attribute: NSLayoutAttribute.CenterX,
            multiplier: 1.0,
            constant: 0.0))

    view.addConstraint(
        NSLayoutConstraint(item: view,
            attribute: NSLayoutAttribute.CenterY,
            relatedBy: NSLayoutRelation.Equal,
            toItem: btn,
            attribute: NSLayoutAttribute.CenterY,
            multiplier: 1.0,
            constant: 0.0))

在我看来,我的意图是明确的。我想在设备屏幕的中央看到一个按钮。但我只能看到下面的图片。

我在项目控制台中有一个输出,非常可怕,我无法从中理解任何东西。

无法同时满足约束。可能以下列表中至少有一个约束是您不想要的。尝试以下方法:(1)查看每个约束,并尝试找出您不期望的约束;(2) 查找添加了一个或多个不需要的约束的代码,并对其进行修复。(注意:如果您看到不理解的NSAutoresizingMaskLayoutConstraints,请参阅UIView属性TranslatesAutoResizingMaskToConstraints的文档)(“”、“”、“”、“(名称:“|”):UIWindow:0x7fd318551080)

会试图通过打破约束来恢复

在UIViewAlertForUnsatifiableConstraints处创建一个符号断点,以在调试器中捕获此断点。中列出的UIView上的UIConstraintBasedLayoutDebugging类别中的方法也可能有用。2015-04-28 23:46:04.516 ConsTest[5966:248434]无法同时满足约束。可能以下列表中至少有一个约束是您不想要的。尝试以下方法:(1)查看每个约束,并尝试找出您不期望的约束;(2) 查找添加了一个或多个不需要的约束的代码,并对其进行修复。(注意:如果您看到不理解的NSAutoresizingMaskLayoutConstraints,请参阅UIView属性TranslatesAutoResizingMaskToConstraints的文档)(“”、“”、“”、“(名称:“|”):UIWindow:0x7fd318551080)

会试图通过打破约束来恢复

在UIViewAlertForUnsatifiableConstraints处创建一个符号断点,以在调试器中捕获此断点。中列出的UIView上的UIConstraintBasedLayoutDebugging类别中的方法也可能有用。

看起来约束被视为相互矛盾的,因此完全被忽略了。我真的无法指出为什么我不能仅仅创建一个按钮并以编程方式将其放置在中心。如有任何相关指示,我们将不胜感激。

共有1个答案

东方和志
2023-03-14

在UIButton(btn)上,将translateAutoResizingMaskintoConstraints设置为false

E、 g。

btn.translatesAutoresizingMaskIntoConstraints = false

推荐阅读:采用自动布局

 类似资料:
  • 问题内容: 与这两个帖子@iMohammad有关, 在单击JButtonJava时使用JButton增加/减少textArea内的字体大小并在单击JButton Java时更改字体样式 …,我面临着一个非常有趣的问题,该问题来自于on 作为参数传递屏幕 请如何动态调整大小取决于,与我在sscce中尝试过的另一个JComponent正常工作一样 问题答案: 我调试了您的SSCCE,并且传递给的值为空

  • 我在JMeter中创建了一个脚本,它从CSV获取登录凭据。 用户名:pshah 密码:欢迎 当我执行脚本时,我可以在POST中看到值: 用户名:pshah 但密码:欢迎 我想知道原因”

  • 问题内容: // Ignore z-index if position is set to a value where z-index is ignored by the browser // This makes behavior of this function consistent across browsers // WebKit always returns auto if the el

  • 问题内容: 我正在尝试在包级别使用Hibernate @TypeDef批注,这与Hibernate文档中所描述的完全相同。我正在使用和。代码可以编译,并且在类路径中,但是Hibernate仍然看不到它。 如果我上课,那是行得通的,但是如果我把放在那,那是没有用的。我试图用Google搜索,但找不到任何有用的信息。 谢谢! 问题答案: 您可能需要添加一个 到您的Hibernate配置文件,或调用co

  • 下面是roles/role1/tasks/main.yml: 我的库存: 最后是host_vars/localhost.yml: 使用运行playbook时出现以下错误

  • 问题内容: 我有一个带有关系的实体,我想通过一个查询来检索它,因此使用。有时,Hibernate不尊重它,而是发出N + 1 秒。随着 有时 我的意思是,因为我不知道是什么触发它,我有案件对不同的查询,这可能发生,或者不一样的类。 这是带有我使用的注释的简化实体: 用 我希望单个查询能够同时获取其及其内容,例如 相反,我得到了第一选择所有N S和那么N 献给所有S(考虑没有缓存)。 我发现了许多类