2010-12-17 63 views
8

如何以编程方式设置NSView的大小,例如如何以编程方式设置NSView大小?

-(void)awakeFromNib { 
     self.frame.size.width = 1280; // Does nothing... 
     self.frame.size.height = 800; // ...neither does this. 
     ... 

笔尖(Mac OSX)中的大小设置工作正常,但我想在代码中完成。

回答

15

当你调用self.frame,它返回的数据帧,而不是一个指针。因此,结果中的任何更改都不会反映在视图中。为了改变视图,你必须设置新的帧进行更改后:

- (void)awakeFromNib { 
    NSRect f = self.frame; 
    f.size.width = 1280; 
    f.size.height = 800; 
    self.frame = f; 
    //... 
} 
+2

非常感谢。我失去了生存的意志。现在不仅有一些事情开始发生,但我发现这是一个错误的问题 - 下面的答案是。 – 2010-12-18 06:15:36

+0

@ughoavgfhw非常感谢你 – pregmatch 2014-10-21 04:43:37

7

使用方法-setFrameSize:或-setFrame:

+0

正确答案。至少在Swift中,直接更改框架属性似乎不起作用。 – udondan 2015-01-17 03:33:35

4

要通过编程设置应用程序的大小(这就是我想做的事),你需要做的是: -

- (void)awakeFromNib { 
    ... 
    NSWindow* w = [self window]; 
    NSRect f; 
    f.size.width = 1280; 
    f.size.height = 800; 
    [w setFrame:f display:YES]; 
} 
相关问题