2011-04-20 99 views
1

我已经划分NSWindow,所以我可以做一些调整并且有一个自定义窗口。其中之一是使底角四舍五入,但尚未成功。NSWindow的底角四舍五入

我试过this但我的窗口没有标准状态栏,它没有工作。 我希望这是可能的;)

在此先感谢

+1

你为什么要让你的窗户不标准?这样做的主要作用是惹恼你的应用程序的用户,并让他们讨厌你。用户界面指南是有原因的。使用它们。 – JeremyP 2011-04-20 07:22:26

+0

没错,但即使苹果公司也做非标准的窗口:iTunes和AppStore的工具栏,Safari的WebInspector和Xcode中的一些窗口以及成千上万个带有自定义窗口的游戏等等都是非标准的例子,并不是所有这些都会让用户烦恼。我认为这取决于他们设计得有多好) – nacho4d 2011-04-21 15:14:19

+0

是的,苹果公司在破坏自己的用户界面指导方面是个坏人。这并不意味着每个人都应该这样做。 – JeremyP 2011-04-23 12:58:38

回答

5

由于我的窗口具有的风格:NSBorderlessWindowMask我已经通过继承窗口和压倒一切的drawRect的containerView解决了这个:

- (void) drawRect:(NSRect)dirtyRect{ 
    [[NSColor windowBackgroundColor] set]; 

    [NSGraphicsContext saveGraphicsState]; 
    NSBezierPath *path; 
    path = [NSBezierPath bezierPathWithRoundedRect:[self bounds] xRadius:5 yRadius:5]; 

    ... // do more fancy stuff here ;) 

    [NSGraphicsContext restoreGraphicsState]; 
} 
4

使用此窗口的委托:

- (void)awakeFromNib 
{ 
    [window setContentBorderThickness:32.0 forEdge:NSMinYEdge]; 
} 

或者你可以在大小设置一个窗口在Xcode 4这种行为检查员在ContentBorder。这将使窗口是这样的:

NSWindow with set content border

+0

对不起,我忘了提及我的窗口是用'NSBorderlessWindowMask'风格初始化的;( – nacho4d 2011-04-21 15:01:17