システム環境設定やその他いろんなウィンドウで、ウィンドウのサイズが変わる時にアニメーションすることがよくあります。Cocoaには、あのアニメーションの機能がありますので、それを今回は解説します。
改版履歴
NSWindowにsetFrame : display : animate :という専用のメソッドが用意されています。
書式 : - (void) setFrame : (NSRect) frameRect display : (BOOL ) displayFlag animate : (BOOL ) animateFlag 入力 : frameRect : 変更したいサイズ : displayFlag : 再表示したい時はYES : animateFlag : アニメするならYES
ウィンドウのサイズと2つフラグがあります。フラグの方はどちらもYESにしておかないとアニメの効果が出ません。プロジェクトを作るとウィンドウが1つ出来ますので、それをOutletのwindowで参照して、zoomというActionで以下のコードを実行するようにします。
#import <Cocoa/Cocoa.h> @interface Zoomer : NSObject { IBOutlet id window; } - (IBAction) zoom : (id)sender; @end
#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