我已经成功地将xib文件中的视图作为子视图动态加载到窗口(另一个xib)上
据我所知,默认情况下,该子视图被加载到窗口的第一个象限中,即子视图位于窗口的最左下方。我的窗户也是如此。
现在的问题是如何将子视图放在窗口的其他位置。换句话说,如果我想将子视图放在窗口的顶部,我将如何实现它?
如果我可以获得NSRect和NSwindow对象框架的解释,我真的很感激。
如果任何API中有任何方法,请指导我们..提前感谢...
更新:
@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 :(得分:2)
NSRect是一个矩形。它由原点和大小组成。原点是一个点,x和y。尺寸是宽度和高度。从现在开始,我将输入{{x,y},{width,height}}
每个视图都有一个框架。视图的框架是该视图在其超视图中的位置。每个视图也有一个边界。视图的边界定义视图的内部坐标系。默认情况下,0位于左下角,随着X和Y的增加,您向右和向上移动。
示例:如果一个视图的边界为{{0,0},{100,100}},并且您将另一个视图放在该视图中并将其框架设置为{{25,50},{10, 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}}