2

Xcode で Cocoa アプリを作成しています。

スプラッシュ スクリーンの画像コンテンツとして .png ファイルを使用してスプラッシュ スクリーンを作成したいと考えています。

私は次のことを達成しました:

  • アプリ起動時にスプラッシュ画面が2秒間表示される
  • 画面中央にスプラッシュ画面が表示される
  • ユーザーがスプラッシュ スクリーンを最小化、移動、またはサイズ変更することはできません。

私のクラスから:

IBOutlet NSView *customView;
IBOutlet NSImageView *splashScreen;
IBOutlet NSWindow *splashWindow;

これが私がこれまでにawakeFromNibで持っているものです

NSRect rect = NSMakeRect(0,0,421,231);
splashScreen = [[NSImageView alloc] initWithFrame:rect];
[splashScreen setImageScaling:NSScaleToFit];
[splashScreen setImage:[NSImage imageNamed:@"splash.png"]];
[customView addSubview:splashScreen];

CGFloat xPos = NSWidth([[splashWindow screen] frame])/2 - NSWidth([splashWindow frame])/2;
CGFloat yPos = NSHeight([[splashWindow screen] frame])/2 - NSHeight([splashWindow frame])/2;
[splashWindow setFrame:NSMakeRect(xPos, yPos, NSWidth([splashWindow frame]), NSHeight([splashWindow frame])) display:YES];

そして、applicationDidFinishLaunching で:

sleep(2); /* Yeah. I know this is bad. No need to comment on that */
[splashWindow close];

質問:

  1. デスクトップで開いているすべてのウィンドウの前面にスプラッシュ画像を表示するにはどうすればよいですか?

  2. PNG は長方形ですが、画像の角に近い小さな領域は透明にする必要があります。ただし...透明なスポットが白く表示されるだけです..どうすれば修正できますか?

  3. 画像が自動的に閉じられる前にユーザーが画像をクリックした場合に画像を閉じる機能を実装するにはどうすればよいですか?

  4. 2 ~ 3 秒後にウィンドウを閉じるようにタイマーを設定するにはどうすればよいですか? (NSTimer)

4

1 に答える 1

4

為に:

  1. zwindow level property of NSWindowスプラッシュ ウィンドウを使用してフローティングにする

  2. ウィンドウを非不透明にする(ボーダーレスウィンドウが必要です)ので、そのようなウィンドウタイプを作成する方法に関するチュートリアルをグーグルで検索してください

  3. そして 4.睡眠は実際に物事を妨げています。3 の場合は画像に mouseDown が必要です。4 の場合はタイマー ==> 両方ともイベントです。メインスレッドをスリープ状態にすると、イベントはディスパッチされません。NSRunLoop が実行されている必要があります。1つの方法はNSRunloop runUntilDate、睡眠の代わりに電話をかけることです

于 2013-10-17T21:54:04.717 に答える