本文介绍了iTunes风格的NSWindow子类?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
有没有一个开源库Cocoa可以创建一个跟随iTunes风格的窗口?这是窗口控件是垂直而不是水平布局:
Is there an open-source library for Cocoa to create a window following iTunes' style? That is the window controls are laid out vertically instead of horizontally:
我发现它节省空间,适用于不需要窗口标题的实用程序类型应用程序。
I find it space-saving and good for utility-type applications that doesn't need a window title.
推荐答案
这个快速入侵NSWindow代理应该让你开始:
This quickly hacked away NSWindow delegate should get you started:
//VerticalTrafficLightsWindowDelegate.h
#import <Cocoa/Cocoa.h>
@interface VerticalTrafficLightsWindowDelegate : NSObject <NSWindowDelegate> {
NSWindow *window;
}
@property (assign) IBOutlet NSWindow *window;
- (void)verticalizeButtonsForWindow:(NSWindow *)aWindow;
@end
//VerticalTrafficLightsWindowDelegate.m
#import "VerticalTrafficLightsWindowDelegate.h"
@implementation VerticalTrafficLightsWindowDelegate
@synthesize window;
- (void)awakeFromNib {
[self verticalizeButtonsForWindow:window];
}
- (void)windowDidResize:(NSNotification *)notification {
[self verticalizeButtonsForWindow:window];
}
- (void)verticalizeButtonsForWindow:(NSWindow *)aWindow {
NSArray *contentSuperViews = [[[aWindow contentView] superview] subviews];
NSView *closeButton = [contentSuperViews objectAtIndex:0];
NSRect closeButtonFrame = [closeButton frame];
NSView *minimizeButton = [contentSuperViews objectAtIndex:2];
NSRect minimizeButtonFrame = [minimizeButton frame];
NSView *zoomButton = [contentSuperViews objectAtIndex:1];
NSRect zoomButtonFrame = [zoomButton frame];
[minimizeButton setFrame:NSMakeRect(closeButtonFrame.origin.x, closeButtonFrame.origin.y - 20.0, minimizeButtonFrame.size.width, minimizeButtonFrame.size.height)];
[zoomButton setFrame:NSMakeRect(closeButtonFrame.origin.x, closeButtonFrame.origin.y - 40.0, zoomButtonFrame.size.width, zoomButtonFrame.size.height)];
}
@end
就像JeremyP我只能希望苹果不会扩大这一点在OS X。
However I got to say that just like JeremyP I can only hope Apple's not going to spread this any wider in OS X.
这篇关于iTunes风格的NSWindow子类?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!