在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]
之类的东西。