2011-02-10 46 views
0


我成功地从一个xib文件加载到一个窗口(另一个xib)视图动态地作为子视图。
我明白,默认情况下,这个子视图被加载到窗口的第一象限中,即子视图位于窗口的最左下角。我的窗户也是如此。
现在的问题是,我如何将子视图放在窗口的其他地方。换句话说,如果我想将子视图放在窗口的顶部,我将如何实现它?将子视图放在另一个视图上

此外,我真的很感激,如果我能提前获得的NSRect为NSwindow对象的解释和框架..
如果有任何的API的任何方法,请告诉我去他们..谢谢...

UPDATE:

@interface ViewAvailableItemsWindowController : NSObject { 
    IBOutlet NSWindow * viewAvailableItemsWindow; //Window in question 
    IBOutlet NSView * viewAvailableItemsView; //View in question 

    ItemSearchViewController * instanceItemSearchView; //ViewController object 
} 

@end 


@implementation ViewAvailableItemsWindowController 

-(void)awakeFromNib{ 
    [viewAvailableItemsWindow makeKeyAndOrderFront:nil]; 
    instanceItemSearchView = [[ItemSearchViewController alloc]initWithNibName:@"ItemSearchView" bundle:nil] ; //Initiating the viewController with the nib for the view. 
    [viewAvailableItemsView addSubview:[instanceItemSearchView view]]; //Adding the subview to the window.. 

} 

-(void)dealloc{ 
    [instanceItemSearchView release]; 
    [super dealloc]; 
} 

@end 

这将加载在窗口 - 我的意思是窗口左下角的第一象限的看法。我想将视图放置在窗口的顶部中心。

+0

你有什么试过?你读过什么文件?详细说明,我们将有一个很好的开始,而不是仅仅指向文档。 –

+0

我已经使用了一个viewController类,它可以帮助我将视图加载到窗口上。我已经更新了我的问题中的代码...请看看.. –

回答

2

NSRect是一个矩形。它由一个原点和一个尺寸组成。起源是一个点,x和y。大小是宽度和高度。从现在开始,我将输入rects为{{x,y},{width,height}}

每个视图都有一个框架。视图的框架是该视图在其超视图中的位置。每个视图也有一个界限。视图的边界定义视图的内部坐标系。默认情况下,0,0在左下角,随着X和Y的增加,您可以向右和向上移动。例如:如果一个视图的边界为{{0,0},{100,100}},并且您在该视图内部放置了另一个视图,并将其框架设置为{{25,50},{10},{10},{10,100} ,10}}那么子视图的尺寸就是10x10,并且位置是左边缘右边25点,底部是50点。

边界大小几乎总是与帧大小相同。除非您打算缩放或移动所有子视图和自定义绘图,否则通常不会设置或调整视图的边界 - 这是一项高级的事情。

所以,如果你有这样的事情:

+-------------------+ 
|  +----------+ | 
|  | +---+ | | 
| A | B | C | | | 
|  | +---+ | | 
|  +----------+ | 
|     | 
|     | 
+-------------------+ 

其中每个方块代表的NSView,并且每个视图是下一个的子视图。所以A包含B,包含C.每个视图的边界和框架可能是这样的:

 Bounds    Frame 
     {{X, Y}, {W, H}} {{ X, Y}, {W, H}} 
A  {{0, 0}, {30, 30}} {{ 0, 0}, {30, 30}} 
B  {{0, 0}, {20, 15}} {{20, 20}, {20, 15}} 
C  {{0, 0}, {10, 10}} {{10, 10}, {10, 10}} 
+0

你不觉得,c的x,y应该是{20,20}和b(10,10}吗? –

+1

每帧的起源是因此B是相对于A而C是相对于B的,原点在左下角,因此B比A的左下角更远,而C则来自B的左下角。 –

相关问题