在Mac应用程序中,我设置了两个NSSplitViews以创建邮件样式的界面(第一个ScrollView用于创建垂直分隔符,第二个ScrollView嵌套在第一个中,以创建水平分隔符)。为了说明该接口,我创建了下图:

alt text http://img96.imageshack.us/img96/1091/setupn.png

为了进一步说明设置,这是我的视图层次结构的带注释的快照:

alt text http://img714.imageshack.us/img714/8153/yayaj.png

我遇到的问题是,当尝试获取托管在我的NSSplitView的B和C部分中的两个NSTableView的帧时,我收到相对坐标。这是我正在使用的代码:

NSRect aTableViewFrame = [aTableView frame];
NSRect bTableViewFrame = [bTableView frame];
NSLog(@"%@ %@", NSStringFromRect(aTableViewFrame), NSStringFromRect(aTableViewFrame));


这是我看到的输出:

{{0, 0}, {760, 143}} {{0, 0}, {760, 392}}


从返回的NSRect值可以看到,我得到了NSTableView的正确宽度和高度,但是我真正想要的是它们相对于父NSSplitView的位置。当然,我可以使用(多个)IBOutlets并自己构造正确的rect值,但是我真正想要的是相对于父级NSSplitView或包含Window的NSTableViews框架的一种简单获取方法。

最佳答案

如果您具有拆分视图,或者通过设置插座来获取它,则可以使用convertRect:fromView:。或者要获取相对于窗口的坐标,可以使用convertRectToBase:。请记住,表格的框架是相对于其父视图的,因此您可以使用[[bTableView superView] convertRectToBase: bTableViewFrame]之类的东西。

09-29 19:54