3

私はこのコードを使用しています(ここの他の質問に触発されました):

- (void)showProgressIndicator {

    if (statusItem) {

        NSLog(@"wassup");
        NSView *progressIndicatorHolder = [[NSView alloc] init];
        NSProgressIndicator *progressIndicator = [[NSProgressIndicator alloc] init];
        [progressIndicator setBezeled: NO];
        [progressIndicator setStyle: NSProgressIndicatorSpinningStyle];
        [progressIndicator setControlSize: NSSmallControlSize];
        [progressIndicator sizeToFit];
        [progressIndicator setUsesThreadedAnimation:YES];
        [progressIndicatorHolder addSubview:progressIndicator];
        [progressIndicator startAnimation:self];
        [statusItem setView:progressIndicatorHolder];
        [progressIndicator setNextResponder:progressIndicatorHolder];
        [progressIndicatorHolder setNextResponder:statusItem];
    }
}

残念ながら、このコードが実行されるとすぐに、ステータス アイテム (最初は画像が表示されています) が消えてしまいます...なぜ私のコードが機能しないのですか?

4

2 に答える 2

3

おそらく、明示的にframeonを設定し、そのスーパービュー内でprogressIndicatorHolder中央に配置する必要があります。たとえば、次のようになります。progressIndicator

CGRect holderRect = progressIndicatorHolder.bounds;
CGRect indicatorRect = progressIndicatorHolder.frame;
indicatorRect.origin.x = (holderRect.size.width - indicatorRect.size.width)/2.0f;
indicatorRect.origin.y = (holderRect.size.height - indicatorRect.size.height)/2.0f;
progressIndicator.frame = indicatorRect;

別の方法として、より洗練されたレイアウトを行いたい場合はNSStatusItem、nib から のビューをロードできます。

于 2012-09-23T10:48:50.770 に答える
0

次のコードは私のために働いています。

progressIndicator = [[NSProgressIndicator alloc] init];

[progressIndicator setBezeled: YES];
[progressIndicator setStyle: NSProgressIndicatorSpinningStyle];
[progressIndicator setControlSize: NSSmallControlSize];
[progressIndicator sizeToFit];
[progressIndicator setUsesThreadedAnimation:YES];

oldView = [statusItem view];
[statusItem setView:progressIndicator];

[progressIndicator sizeToFit];
[statusItem setView:progressIndicator];
[progressIndicator startAnimation:self];

progressIndicatorHolder はどこにも設定されていないことに注意してください。

于 2013-03-11T20:35:20.087 に答える