在超级视图中定位元素

时间:2012-09-09 17:16:59

标签: objective-c xcode macos cocoa nsview

所以,这是我的情况:

  • 一个NSBox
  • 在此内部,有一个NSTextField

我想做的是:

  • 以编程方式管理将textField放在框中(例如,左上角,右上角,中心等)。

我已经尝试使用NSTextField的{​​{1}}或bounds,但我认为我无法做到......

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

如果我正确理解了您的问题,您是否只想在调整视图大小时确保NSTextField始终位于左上角,中间位置或其他位置?如果是这样,那么你可以使用支柱和弹簧。如果您只想移动文本字段,则应该更改框架。例如,如果您有一个名为 foo 的文本字段,则可以设置整个框架:

[foo setFrame: CGRectMake(desiredX,desiredY,foo.bounds.size.width,foo.bounds.size.height)];

或仅仅是它的起源(有效地重新定位它):

[foo setFrameOrigin: CGPointMake(desiredX, desiredY)];

答案 1 :(得分:0)

为了感兴趣,还有一种用于在Cocoa定位的小型语言Visual Format Language。它允许您指定关系,例如:

|-50-[orchidBox]-50-|

这意味着子元素应该从它的每一侧的超视图缩进50px。