2012-05-24 10 views
7

के लिए कर्सर का आकार बदलने अगर हम कुछ निर्दिष्ट क्षेत्र के लिए NSTrackingArea का उपयोग तो हम इस तरह के विधि लागू कर सकते हैं डिफ़ॉल्ट कर्सर को बदलने के लिए:मूल निवासी OSX शेर कस्टम NSWindow या NSView

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

मैं कस्टम को लागू करने के लिए NSWindow आकार परिवर्तन, जो NSBorderlessWindowMask का उपयोग करता है । और मूल शेर के दो तीर कर्सर का उपयोग करना चाहते हैं। लेकिन 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

वेबकिट छवियों कि वास्तव में सिस्टम द्वारा प्रयुक्त कर्सर जैसा ही दिखाई देता है, तो निम्न निर्देशिका में शामिल हैं।

15

वाले वेबकिट में मौजूद नहीं उपलब्ध रेटिना संकल्प में दुर्भाग्य से,

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

में देख आप आकार बदलने कर्सर की पीडीएफ संस्करण मिल जाएगा रहे हैं।

+0

क्या आप कोड प्रदान कर सकते हैं कि इस तरह के कर्सर को सही तरीके से कैसे लोड किया जाए? वे मेरे लिए रेटिना में नहीं दिखाए जाते हैं :( –

+0

क्या इन कर्सर को पाने/उपयोग करने के लिए कोई सार्वजनिक एपीआई है ..? – 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])]; 

नोट मैं नहीं जानता कि क्या यह सैंडबॉक्स Apps में काम करता है।

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] 
संबंधित मुद्दे