(Я надеюсь, что плитка имеет смысл ...) Я пытаюсь сделать изменение размера NSWindow «ограниченным» по содержанию, которое представляет собой представление с фиксированным соотношением сторон , и расстояние на дне, как на картинке.Изменить размер NSWindow с "полуфиксированным" соотношением сторон
Ограничения есть, от ContextBackedView к SuperView, ведущий, задней и верхней части пространства равна 0, а нижняя пространство равно 37, а также соотношение сторон ограничение (418: 263)
Вот выход для constraintsAffectingLayoutForOrientation
(0x6000001217c0 это окно contentView) NSLayoutConstraintOrientationHorizontal
<NSAutoresizingMaskLayoutConstraint:0x618000080af0 h=-&- v=-&- H:|-(0)-[NSView:0x6000001217c0] (Names: '|':NSThemeFrame:0x1003060c0'Window')>,
<NSAutoresizingMaskLayoutConstraint:0x618000080b40 h=-&- v=-&- H:[NSView:0x6000001217c0]-(0)-| (Names: '|':NSThemeFrame:0x1003060c0'Window')>,
<NSLayoutConstraint:0x618000080870 'NSWindow-current-width' H:[NSThemeFrame:0x1003060c0'Window'([email protected])] priority:500>
NSLayoutConstraintOrientationVertical
<NSAutoresizingMaskLayoutConstraint:0x618000080af0 h=-&- v=-&- H:|-(0)-[NSView:0x6000001217c0] (Names: '|':NSThemeFrame:0x1003060c0'Window')>,
<NSAutoresizingMaskLayoutConstraint:0x618000080b40 h=-&- v=-&- H:[NSView:0x6000001217c0]-(0)-| (Names: '|':NSThemeFrame:0x1003060c0'Window')>,
<NSLayoutConstraint:0x6000000828a0 H:[NSView:0x600000121860]-(0)-| (Names: '|':NSView:0x6000001217c0)>,
<NSLayoutConstraint:0x600000082990 H:|-(0)-[NSView:0x600000121860] (Names: '|':NSView:0x6000001217c0)>,
<NSLayoutConstraint:0x618000080870 'NSWindow-current-width' H:[NSThemeFrame:0x1003060c0'Window'([email protected])] priority:500>,
<NSAutoresizingMaskLayoutConstraint:0x618000080b90 h=-&- v=-&- V:[NSView:0x6000001217c0]-(0)-| (Names: '|':NSThemeFrame:0x1003060c0'Window')>,
<NSLayoutConstraint:0x6000000828f0 V:|-(0)-[NSView:0x600000121860] (Names: '|':NSView:0x6000001217c0)>,
<NSLayoutConstraint:0x600000082940 V:[NSView:0x600000121860]-(37)-| (Names: '|':NSView:0x6000001217c0)>,
<NSLayoutConstraint:0x6000000800f0 NSView:0x600000121860.width == 1.58935*NSView:0x600000121860.height>
Использование автоматического макета, оно работает только при изменении размера окна, но не в том случае, если я попытаюсь изменить его высоту. я не могу использовать - [NSWindow setAspectRatio:], так как отношение окна на самом деле не фиксированное число (из-за нижнего пространства, имеющего остаться такой же)
Я также попытался с помощью -windowWillResize: toSize: но Я не мог найти способ сделать его надежным (изменение размера только по ширине или высоте, но при смене обоих оно обычно ломается ...)
Кто-нибудь знает способ достижения этого?
Что происходит, когда вы пытаетесь изменить высоту окна? –
Он просто не изменяется ... –
Ваш скриншот кажется затененным некоторыми ограничениями. Вы можете свернуть представление библиотеки объектов. Или объясните ограничения текста в вопросе или что-то еще. –