0

iPhone アプリで循環プリローダーを作成したいと思っていましたが、どこから始めればよいか苦労しています。今日 Sequel Pro を使っていたのですが、まさに私が欲しかったものを持っていて、オープン ソースであることがわかりました。そのため、ソースをダウンロードしましたが、何も見つかりませんでした。

次の行に沿って何かを作成する方法の開始を探しています。

代替テキスト http://www.grabup.com/uploads/c7b2d101cd9caf0d927c2fa8a7850ba2.png

また

代替テキスト http://www.grabup.com/uploads/fc8520a4425331a3a6a0cbf6508b510f.png

いくつかのフラッシュ チュートリアルを見つけましたが、それを Objective-C で使用可能なコードに変換するのは困難です。

前もって感謝します。

4

4 に答える 4

3

この目的のために UIView サブクラスを作成することは難しくありません。サブクラスでは、drawRectルーチンで大まかに次のことを行います。

CGContextRef context = UIGraphicsGetCurrentContext();
CGFloat      center_x = self.frame.size.width / 2;
CGFloat      center_y = self.frame.size.height / 2;
double       progress = 0.42; // A floating-point number from 0..1 inclusively

// draw the frame
CGContextAddArc(context,
                center_x,
                center_y,
                std::min(self.frame.size.width, self.frame.size.height),
                0,
                M_PI * 2,
                1 /*clockwise*/);
CGContextStrokePath(context);

// draw the progress indicator
CGContextAddArc(context,
                center_x,
                center_y,
                std::min(self.frame.size.width, self.frame.size.height),
                0,
                M_PI * 2 * progress,
                1 /*clockwise*/);
CGContextFillPath(context);
于 2009-08-31T21:30:23.100 に答える
1

AnimatedGif ライブラリを使用し、アニメーション GIF を preloaders.net などからダウンロードする必要があります。

プログラムで(IBなしで)それを行うだけです。とても簡単です。コードは次のとおりです。

AnimatedGif *animatedGif = [[[AnimatedGif alloc] init] autorelease];    
NSData *data = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"circle-loader" ofType:@"gif"]]; 
[animatedGif decodeGIF: data];
self.loadingImage = [animatedGif getAnimation]; //self.loadingImage is a UIImageView
[self.view addSubview:loadingImage];

その後、後で GIF を削除する場合:

[loadingImage removeFromSuperview];
[loadingImage release];
于 2009-09-02T20:27:39.510 に答える
1

AnimatedGif (上記参照) ライブラリは非常にうまく機能します。ここでそれを見つけるために掘らなければなりませんでした: http://blog.stijnspijker.nl/2009/07/animated-and-transparent-gifs-for-iphone-made-easy/

于 2010-08-27T07:00:52.900 に答える
0

Interface Builderに含まれているような進行状況インジケーターを意味しますが、円形ですか? チュートリアルで見た Flex フレームワークにはデフォルトのものがあると思います。

これは自分で作るしかないと思います。あなたができることは、オブジェクトからの進行状況の通知をリッスンするビューを持つことです。これらを受け取ると、表示する画像を計算し、viewNeedsDisplay メソッドを呼び出します。

Sequel Pro のソースをざっと見たところ、あなたが探しているのは NSProgressIndicator だと思います。しかし、Sequel Pro はデスクトップ アプリであり、iPhone よりも柔軟性があります。Cocoa Touch に相当するのは UIActivityIndi​​catorView で、これは常に不確定です (つまり、完了率を指定することはできません)。

編集: はい、描画ルーチンについては上記の fbrereton のコードを参照してください。

そして、通知をリッスンして進行状況の浮動小数点値を取得する方法は次のとおりです。

    [[NSNotificationCenter defaultCenter] addObserver:self 
                                             selector:@selector(receivedProgress:)
                                                 name:@"MyProgressIndication" 
                                               object:nil];

次のように作業を行っているオブジェクトからそれらを投稿します。

    [[NSNotificationCenter defaultCenter] postNotificationName:@"MyProgressIndication"
                                                        object:[NSNumber numberFromFloat:progress]];

通知名の定数が最適です。

于 2009-08-31T21:30:49.950 に答える