NSPredicateEditor以编程方式更改控制高度

时间:2013-07-03 13:42:42

标签: objective-c cocoa interface-builder autolayout

我无法弄清楚为什么当我运行我的程序并按下(+)按钮以使默认谓词控件添加另一行时,它不会增加谓词控件的大小并将下面的相应NSOutlineView推下。

现在发生的事情是它会添加行,但是我必须使用鼠标滚轮在小框架内滚动,而不是增长框架以适应行的高度。

我正在使用AutoLayout,在这种情况下不确定这是否有问题。我相信我的约束设置正确。我设置了一个约束来确保NSOutlineView和NSPredicateView之间的距离始终为-1,以便窗口滚动它正确地保持在原位。我不确定这甚至是问题,但目前对此表示怀疑。只是让你知道我已经意识到了。

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:2)

我终于找到了答案!乌拉!

以下是一个简单的答案:SetFrame不适用于AUTOLAYOUT!

相反,你必须编辑约束!

这意味着在NSPredicateEditor上设置'height'的约束,并将IBOutlet设置为你的代码。

然后使用以下命令。

NSInteger newRowCount = [_predicateEditor numberOfRows];
NSInteger rowHeight = [_predicateEditor rowHeight];

[[_predicateEditorHeight animator] setConstant:rowHeight*newRowCount];

像魅力一样!

相关问题