8

指定された領域に使用する場合はNSTrackingArea、そのようなメソッドを実装してデフォルトのカーソルを変更できます。

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

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

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

4

4 に答える 4

15

WebKit に存在するものは、残念ながら網膜解像度では利用できません。

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

カーソルのサイズ変更の PDF バージョンがあります。

于 2012-10-25T09:06:47.847 に答える
6

HIServices.framework からベクターベースの (したがって Retina 対応の) カーソルをロードするためのサンプル コードを次に示します。

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])];

これがサンドボックス化されたアプリで機能するかどうかはわかりません。

于 2014-02-14T18:27:27.993 に答える
4

このようなカーソルを作成するための文書化されていない方法があります。次に例を示します。

#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 Sierra の文書化されていないカーソルの完全なリストは次のとおりです。

[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]
于 2017-10-08T19:51:55.500 に答える
1

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

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

...たとえば、ファイル「northWestSouthEastResizeCursor.png」。

于 2012-06-25T07:53:34.203 に答える