Изменение размера NSWindows с уменьшающей анимацией Я пытаюсь изменить размер NSWindow (основной) с приятной анимацией (EaseOut). Я могу использовать [NSWindow animator], но я не нашел способ добавить эффект ослабления. Есть ли у вас идея или образец кода, который может помочь мне сделать это? Ответ 1 Вариант 1 float Y = 100; float X = 200; NSRect frame = [window frame]; frame.origin.y -= Y; frame.size.height += Y; frame.size.width += X; [window setFrame:frame display:YES animate:YES]; Вариант 2 float Y = 100; float X = 200; NSRect frame = [window frame]; frame.origin.y -= Y; frame.size.height += Y; frame.size.width += X; NSDictionary *windowResize = @{ NSViewAnimationTargetKey: window, NSViewAnimationEndFrameKey: [NSValue valueWithRect:frame] }; NSDictionary *oldFadeOut = @{ NSViewAnimationTargetKey: nil, NSViewAnimationEffectKey: NSViewAnimationFadeOutEffect }; NSDictionary *newFadeIn = @{ NSViewAnimationTargetKey: nil, NSViewAnimationEffectKey: NSViewAnimationFadeInEffect }; NSArray *animations = @[arrayWithObjects:windowResize, newFadeIn, oldFadeOut]; NSViewAnimation *animation = [[NSViewAnimation alloc] initWithViewAnimations: animations]; [animation setAnimationBlockingMode: NSAnimationBlocking]; [animation setAnimationCurve: NSAnimationEaseIn]; [animation setDuration: 2]; [animation startAnimation]; Ответ 2 [[NSWindow animator] setAlphaValue:0.0]; Не забудьте установить альфа-значение в 1.0, когда вы хотите снова отобразить окно.
Ответ 1 Вариант 1 float Y = 100; float X = 200; NSRect frame = [window frame]; frame.origin.y -= Y; frame.size.height += Y; frame.size.width += X; [window setFrame:frame display:YES animate:YES]; Вариант 2 float Y = 100; float X = 200; NSRect frame = [window frame]; frame.origin.y -= Y; frame.size.height += Y; frame.size.width += X; NSDictionary *windowResize = @{ NSViewAnimationTargetKey: window, NSViewAnimationEndFrameKey: [NSValue valueWithRect:frame] }; NSDictionary *oldFadeOut = @{ NSViewAnimationTargetKey: nil, NSViewAnimationEffectKey: NSViewAnimationFadeOutEffect }; NSDictionary *newFadeIn = @{ NSViewAnimationTargetKey: nil, NSViewAnimationEffectKey: NSViewAnimationFadeInEffect }; NSArray *animations = @[arrayWithObjects:windowResize, newFadeIn, oldFadeOut]; NSViewAnimation *animation = [[NSViewAnimation alloc] initWithViewAnimations: animations]; [animation setAnimationBlockingMode: NSAnimationBlocking]; [animation setAnimationCurve: NSAnimationEaseIn]; [animation setDuration: 2]; [animation startAnimation];
Ответ 2 [[NSWindow animator] setAlphaValue:0.0]; Не забудьте установить альфа-значение в 1.0, когда вы хотите снова отобразить окно.