1

我在窗口中有一个视图,视图的位置和大小是使用自动布局计算的。该视图有一个子视图,一个可拖动的NSView子类。通过直接覆盖和更改视图的框架来使 NSView “可拖动”非常容易。-mouseDown:-mouseDragged:

视图层次结构如下, 可拖动的子视图

在这种情况下,使子视图可拖动的最佳方法是什么?

例如,

  1. 子视图是否可以使用自动布局,从而可以通过直接更改框架来定位?即窗口定位主视图,但自动布局不会在主视图内布局子视图。还是层次结构中的所有视图都需要使用自动布局?

  2. 当我之前使用过自动布局时,我用它来制作响应调整大小的“固定”布局。但是用鼠标拖动视图似乎不是自动布局的自然用例。

4

2 回答 2

1

最好的方法是不要避免自动布局。使用自动布局约束 IBOutlets 并从 NSEvent 短路鼠标跟踪中获取鼠标增量,使视图可拖动非常容易。

于 2013-10-19T09:08:02.697 回答
1

子视图是否可以不使用自动布局,从而可以通过直接更改框架来定位?

是的。如果您继续translatesAutoresizingMaskIntoConstraints打开,它会自动根据 和 的值创建frame约束autoresizingMask

事实上,这意味着它将使用自动布局,但您可以frame像手动定位一样使用。

于 2013-10-19T09:51:25.283 回答