एनिमेट यहाँ एक और NSWindow
सवाल ... मुझे मिल गया है सीमारहित खिड़की, पारदर्शी है, जो इस तरह से बनाई गई है है ...NSWindow - सीमाहीन, पारदर्शी खिड़की - छाया झिलमिलाते जब खिड़की ऊंचाई
- (id)initWithView:(NSView *)view anchorPoint:(NSPoint)anchorPoint position:(NSPoint)position distance:(CGFloat)distance {
if (!view) {
return nil;
}
NSSize size = view.intrinsicContentSize;
NSRect contentRect = NSMakeRect(0, 0, size.width, size.height);
self = [super initWithContentRect:contentRect
styleMask:NSBorderlessWindowMask
backing:NSBackingStoreBuffered
defer:NO];
if (!self) {
return nil;
}
_windowView = view;
_anchorPoint = anchorPoint;
_position = position;
_distance = distance;
[self setContentView:_windowView];
[self setExcludedFromWindowsMenu:YES];
[self setMovableByWindowBackground:NO];
[self setOpaque:NO];
[self setBackgroundColor:[NSColor clearColor]];
[self setHasShadow:YES];
[self useOptimizedDrawing:YES];
[self setReleasedWhenClosed:NO];
[self setFrame:[self windowRectWithSize:contentRect.size] display:YES];
[self setAnchorAttribute:NSLayoutAttributeTop forOrientation:NSLayoutConstraintOrientationVertical];
[self setAnchorAttribute:NSLayoutAttributeCenterX forOrientation:NSLayoutConstraintOrientationHorizontal];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(viewFrameDidChange:)
name:NSViewFrameDidChangeNotification
object:nil];
return self;
}
.. । और viewFrameDidChange:
इस उचित NSWindow
छाया के लिए एक ही रास्ता है के रूप में परिभाषित किया गया है ...
- (void)viewFrameDidChange:(NSNotification *)note {
if (note.object != self.contentView) {
return;
}
[self display];
[self setHasShadow:NO];
[self setHasShadow:YES];
}
...। दूसरे शब्दों में, विंडो का आकार बदलता है, मैं display
, setHasShadow:NO
और setHasShadow:YES
अन्यथा खिड़की छाया अपंग है कॉल करने के लिए जब भी में - खिड़की का कोई हिस्सा, आदि
यह काम जब तक मैं शुरू करता है - यह पूरे खिड़की के आसपास नहीं है एनिमेटिंग ऊंचाई। यदि ऊंचाई एनिमेटेड है, छाया सही ढंग से पुन: गणना और प्रदर्शित होती है, लेकिन पूरी विंडो & छाया झटकेदार है और यह बहुत बदसूरत है।
एक विचार क्यों छाया छायांकन कर रही है? मैंने display
, setHasShadow:NO/YES
को [self invalidateShadow]
के साथ बदलने की कोशिश की, लेकिन यह बिल्कुल काम नहीं करता है और छाया गलत तरीके से प्रदर्शित होती है।
फ्लिकरिंग से बचने के लिए सीमाहीन/पारदर्शी विंडो में छाया के साथ विंडो ऊंचाई को एनिमेट करना चाहिए?
यहां झटकेदार छाया का वीडियो है। http://d.pr/v/lbkQ
मैंने चारों ओर खोज की और यह जवाब देने के लिए एक बहुत मुश्किल सवाल प्रतीत होता है। मैं सुझाव दूंगा कि आप ऐप्पल के साथ एक डेवलपर तकनीकी सहायता करें (एक डेवलपर के रूप में आपको प्रति वर्ष 2 मुफ्त मिलते हैं)। मुझे यकीन है कि वहां पर कोई भी आपके लिए इस मुद्दे को हल कर सकता है। – sangony
मैंने किसी नियंत्रित वातावरण में समस्या को पुन: उत्पन्न करने की कोशिश की लेकिन असफल रहा। उसी प्रकार की पारदर्शी खिड़की (पारदर्शी पेपर क्लिप के साथ) मुझे अच्छी गैर-झटकेदार छाया मिलती है। मैंने आकार बदलने की सूचनाओं को भी निष्क्रिय कर दिया है। [यहां कोड है] (https://dl.dropboxusercontent.com/u/20258059/WindowShadows.zip)। शायद उसके पास छाया के साथ कुछ भी नहीं है, लेकिन आंतरिक दृश्य को फिर से निकालने के साथ, अंत में अंत में छाया को प्रभावित करता है। मुझे जिक्र करना चाहिए कि खिड़की पर क्लिक करके खिड़की का आकार बदलना है। – aLevelOfIndirection