iOS*_*com 4 macos cocoa objective-c autolayout nslayoutconstraint
我刚刚在github上创建了一个空项目 - > 这里 < - 来演示问题(在objective-c中完成)
该项目是一个简单的故事板项目.NSWindowController加载一个NSPageController,它加载一个包含3个窗格的NSSplitView.除了加载屏幕的代码之外,示例项目中没有代码.当项目运行时,它看起来像这样
.
当调整窗口大小时,如何获取约束以使splitView一直延伸到末尾?奇怪的是,如果你将NSWindowController的contentController从NSPageController切换到NSSplitViewController,那么每件事都按预期工作.这是Apple Bug吗?我很感激任何答案swift/objectivec please.我试过但没有任何作用.
[编辑] - 基于下面的答案和进一步研究(联系Apple),似乎NSPageViewController不使用自动布局约束,但依赖于其子视图上的自动调整遮罩和框架设置.
因此,当页面控制器创建其视图控制器时,我们应该设置:
-(NSViewController *)pageController:(NSPageController *)pageController viewControllerForIdentifier:(NSString *)identifier {
NSViewController *viewController = [self.storyboard instantiateControllerWithIdentifier:identifier];
[viewController.view setAutoresizingMask:(NSViewWidthSizable|NSViewHeightSizable)];
return viewController;
}
Run Code Online (Sandbox Code Playgroud)
有了这个,问题就解决了.我希望将来作为更新,这个控件适用于Autolayout约束,因为它看起来更自然.
我遇到了很多问题NSPageController.我发现解决方案是不使用自动布局.
尝试使用NSAutoresizingMaskOptions你的NSSplitView.首先,删除内部的所有约束NSPageController.
然后:
splitView.autoresizingMask = NSViewWidthSizable | NSViewHeightSizable;
splitView.frame = pageController.view.bounds;
Run Code Online (Sandbox Code Playgroud)
要么
splitView.autoresizingMask = [.ViewWidthSizable, .ViewHeightSizable]
splitView.frame = pageController.view.bounds
Run Code Online (Sandbox Code Playgroud)
编辑
在这里制作了一个基于你的项目
| 归档时间: |
|
| 查看次数: |
754 次 |
| 最近记录: |