2012-05-24 5 views
7

のカーソルのサイズを変更:ネイティブOSXライオンは、我々はいくつかの指定された領域のため<code>NSTrackingArea</code>を使用する場合、我々は、デフォルトのカーソルを変更するには、このような方法を実装することができ、カスタムNSWindowのか、NSViewの

-(void)cursorUpdate:(NSEvent *)theEvent { 
    [[NSCursor resizeLeftCursor] set]; 
} 

私はNSBorderlessWindowMaskを使用した、カスタムNSWindowのためにサイズを変更実装します。ネイティブのライオンの2つの矢印カーソルを使用したい。しかし、そのようなタイプのカーソルはNSCursor APIには存在しません。

コードからこのようなネイティブカーソルを取得できますか?
または、私は手でそれらを再描画する必要があります(良い考えではありません)?

/System/Library/Frameworks/WebKit.framework/Versions/Current/Frameworks/WebCore.framework/Resources/ 

...例えば、ファイル「northWestSouthEastResizeCursor.png」:

+0

同じ問題:

#pragma clang diagnostic push #pragma clang diagnostic ignored "-Wundeclared-selector" if ([NSCursor respondsToSelector:@selector(_windowResizeNorthSouthCursor)]) { self.resizeUpDownCursor = [NSCursor performSelector:@selector(_windowResizeNorthSouthCursor)]; } else { self.resizeUpDownCursor = [NSCursor resizeUpDownCursor]; } #pragma clang diagnostic pop 

ここMacOSのシエラで文書化されていないカーソルの完全なリストがあります: はここに例を示します。あなたはそれらのカーソルイメージを見つけましたか? – Mark

答えて

1

のWebKitは、次のディレクトリに、システムによって使用されるカーソルとまったく同じに見える画像が含まれています。

15

のWebKitに存在するものは、あなたがカーソルをリサイズのPDF版を見つけることができます

/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/Resources/cursors 

に見て、残念ながら網膜の解像度では使用できません。

+0

このようなカーソルを正しく読み込む方法をコードで教えてください。彼らは私のために網膜に表示されていません:( –

+0

これらのカーソルを取得/使用するパブリックAPIはありますか? – cacau

5

はこちらHIServices.frameworkからロードベクターベース(したがって可能網膜)カーソルのいくつかのサンプルコードです:

NSString *cursorName = @"resizenortheastsouthwest"; 
NSString *cursorPath = [@"/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/Resources/cursors" stringByAppendingPathComponent:cursorName]; 
NSImage *image = [[NSImage alloc] initByReferencingFile:[cursorPath stringByAppendingPathComponent:@"cursor.pdf"]]; 
NSDictionary *info = [NSDictionary dictionaryWithContentsOfFile:[cursorPath stringByAppendingPathComponent:@"info.plist"]]; 
NSCursor *cursor = [[NSCursor alloc] initWithImage:image hotSpot:NSMakePoint([[info valueForKey:@"hotx"] doubleValue], [[info valueForKey:@"hoty"] doubleValue])]; 

注私は、これは、サンドボックスのアプリで動作するかどうかわかりません。

1

このようなカーソルを作成する方法はありません。ここ

[NSCursor _windowResizeEastCursor] 
[NSCursor _windowResizeWestCursor] 
[NSCursor _windowResizeEastWestCursor] 
[NSCursor _windowResizeNorthCursor] 
[NSCursor _windowResizeSouthCursor] 
[NSCursor _windowResizeNorthSouthCursor] 
[NSCursor _windowResizeNorthEastCursor] 
[NSCursor _windowResizeNorthWestCursor] 
[NSCursor _windowResizeSouthEastCursor] 
[NSCursor _windowResizeSouthWestCursor] 
[NSCursor _windowResizeNorthEastSouthWestCursor] 
[NSCursor _windowResizeNorthWestSouthEastCursor] 
[NSCursor _zoomInCursor] 
[NSCursor _zoomOutCursor] 
[NSCursor _helpCursor] 
[NSCursor _copyDragCursor] 
[NSCursor _genericDragCursor] 
[NSCursor _handCursor] 
[NSCursor _closedHandCursor] 
[NSCursor _moveCursor] 
[NSCursor _waitCursor] 
[NSCursor _crosshairCursor] 
[NSCursor _horizontalResizeCursor] 
[NSCursor _verticalResizeCursor] 
[NSCursor _bottomLeftResizeCursor] 
[NSCursor _topLeftResizeCursor] 
[NSCursor _bottomRightResizeCursor] 
[NSCursor _topRightResizeCursor] 
[NSCursor _resizeLeftCursor] 
[NSCursor _resizeRightCursor] 
[NSCursor _resizeLeftRightCursor] 
関連する問題