【问题标题】:Cocoa. Is there a way to completely disable autolayout/constraints for all windows?可可。有没有办法完全禁用所有窗口的自动布局/约束?
【发布时间】:2018-07-28 01:10:58
【问题描述】:

我正在使用 Cocoa 构建一个以编程方式生成的 UI,并为每个视图自动生成自动布局/约束会杀死我想要实现的所有标记。有没有办法完全禁用自动布局?我宁愿手动使用好的旧 setFrame,我不需要任何调整大小或任何花哨的东西。谢谢

【问题讨论】:

    标签: objective-c macos cocoa


    【解决方案1】:

    是的,关闭translatesAutoresizingMaskIntoConstraints 以查看您的意见。

    view.translatesAutoresizingMaskIntoConstraints = NO;
    

    如果该属性的值为YES,系统会创建一组 复制视图指定行为的约束 自动调整大小的蒙版。

    默认情况下,对于您的任何视图,该属性都设置为 YES 以编程方式创建。如果在 Interface Builder 中添加视图, 系统自动将此属性设置为 NO。

    【讨论】:

    • 你试过了吗?我已经关闭了它,我仍然可以看到调试器中生成的一堆约束,它忽略了我正在设置的帧,因为其中一个约束有固定的大小
    • 是的,它有效。我假设必须在将视图添加到超级视图之前设置此属性。
    • 只是自己的观点,还是使用第三方组件?
    • 它是我的视图(现在是 NSStackView 和 NSButton),我正在从代码中创建它们。我在创建对象后立即设置标志。大多数谷歌答案都是关于 view.translatesAutoresizingMaskIntoConstraints 或重载 requiresConstraintBasedLayout 但到目前为止没有一个对我有用
    • 可能与我的设置有关,是的。基本上我有一个父 nswindow,然后我创建一个子 NSPanel,将自定义 NSView 设置为 contentView,然后创建另一个具有 NSButton 和 NSView 的嵌套 NSView。我现在可以很好地控制所有 nsview 的大小,但不能控制 NSButton。无论如何,谢谢你的帮助!会继续挖掘
    猜你喜欢
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-26
    • 1970-01-01
    • 1970-01-01
    • 2014-02-22
    相关资源
    最近更新 更多