Cocoaはやっぱり!
Windowのズームアニメ
アニメしながらリサイズ
今回のテーマ

システム環境設定やその他いろんなウィンドウで、ウィンドウのサイズが変わる時にアニメーションすることがよくあります。Cocoaには、あのアニメーションの機能がありますので、それを今回は解説します。

改版履歴

NSWindowにsetFrame : display : animate :という専用のメソッドが用意されています。

NSWindow : アニメーションしながらウィンドウサイズを変える
書式 : - (void) setFrame : (NSRect) frameRect    display : (BOOL ) displayFlag    animate : (BOOL ) animateFlag 入力 : frameRect : 変更したいサイズ    : displayFlag : 再表示したい時はYES    : animateFlag : アニメするならYES

ウィンドウのサイズと2つフラグがあります。フラグの方はどちらもYESにしておかないとアニメの効果が出ません。プロジェクトを作るとウィンドウが1つ出来ますので、それをOutletのwindowで参照して、zoomというActionで以下のコードを実行するようにします。

Zoomer.h
#import <Cocoa/Cocoa.h> @interface Zoomer : NSObject { IBOutlet id window; } - (IBAction) zoom : (id)sender; @end
Zoomer.m
#import "Zoomer.h" @implementation Zoomer - (IBAction) zoom : (id) sender { NSRect rectNow = [ window frame ]; [ window setFrame : NSMakeRect( 100, 100, 200, 200 ) display : YES animate : YES ]; [ window setFrame : rectNow display : YES animate : YES ]; } @end