今天在修改原来的代码时把程序结构给动了一下,遇到一个布局问题,之前我是在IB上拖视图的方式把其他视图一个一个堆砌到SplitView上,现在我想换成代码的方式,定义了一个View,继承自NSSplitViewController,但是如下代码有问题:
splitView(:shouldAdjustSizeOfSubview)
这个函数没法重载,说与AutoLayout不兼容,怎么破?
我要的效果是
就跟Safari一样的效果。
一般窗体最大化时SplitView的2个子视图是按比例重绘宽度,而我的需求是把左边的导航视图固定宽度,不按比例变大。
之前不存在这个问题是因为我通过拖放视图的方式在IB里把一个NSSplitView放到我的NSViewController里(NSSplitView的delegate指向NSViewController),然后extension这个NSViewController,实现splitView(:shouldAdjustSizeOfSubview)这个方法即可。
现在我改了,通过编码的方式继承NSSplitViewController自己实现了一个自定义的SplitView控制器,然后在override这个splitView(:shouldAdjustSizeOfSubview)方法时,Xcode提示错误,错误原因是这个方法与AutoLayout不兼容。stackoverflow上也有描述这个问题,不过没有给出具体的解决办法。