-2

iPhoneのサーバーからファイルをダウンロードしながらプログレスバーを作成する方法。

4

4 に答える 4

1

ダウンロード進行状況バー表示の次のコード

import "UIDownloadBar.h"

@interface yourClassViewCtr : UIViewController <uidownloadbardelegate ,UIAlertViewDelegate> {
    UIDownloadBar *bar;
    UILabel *lblForDisplay;
    UIAlertView *alert;
}

デリゲート メソッド コード

#pragma mark - UIDownloadBar Delegate Methods

- (void)downloadBar:(UIDownloadBar *)downloadBar didFinishWithData:(NSData *)fileData suggestedFilename:(NSString *)filename {
//  NSLog(@"%@", filename);
//    NSLog(@"%@",fileData);
    
    UIImage *img=[UIImage imageWithData:fileData];
    UIImageView *imgVctr=[[UIImageView alloc]initWithFrame:CGRectMake(40, 25, 200, 100)];
    imgVctr.image=img;
    
    //store locally data into the resource folder. 
    [self.view addSubview:imgVctr];
    [alert dismissWithClickedButtonIndex:0 animated:YES];
}

- (void)downloadBar:(UIDownloadBar *)downloadBar didFailWithError:(NSError *)error {
    NSLog(@"%@", error);
}

- (void)downloadBarUpdated:(UIDownloadBar *)downloadBar {
}

詳細については、次のチュートリアルを参照してください。

これはあなたに役立つかもしれません。

于 2012-09-28T07:13:05.227 に答える
0

ダウンロードヘルパークラスを使用してファイルをダウンロードすると、プログレスバーの表示も表示されます。

于 2012-09-28T07:11:55.880 に答える
0
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {

    [self setBackgroundColor:[UIColor colorWithWhite:0 alpha:0.8]];
    [self setAutoresizesSubviews:YES];

    self.downloadMessage=[[[UILabel alloc] initWithFrame:CGRectMake(40, 0, frame.size.width-80, frame.size.height/2)] autorelease];

    [self.downloadMessage setTextAlignment:UITextAlignmentCenter];
    [self.downloadMessage setFont:[UIFont boldSystemFontOfSize:11]];
    [self.downloadMessage setAutoresizingMask:UIViewAutoresizingFlexibleRightMargin|UIViewAutoresizingFlexibleLeftMargin];
    [self.downloadMessage setText:@"Downloading Assets..."];
    [self.downloadMessage setBackgroundColor:[UIColor clearColor]];
    [self addSubview:self.downloadMessage];
    [self.downloadMessage setTextColor:[UIColor whiteColor]];

    float offset=(frame.size.width-200)/2;
    self.progressiveView=[[[UIProgressView alloc] initWithProgressViewStyle:UIProgressViewStyleDefault] autorelease];

    [self.progressiveView setFrame:CGRectMake(offset, frame.size.height/2, 200, frame.size.height/2)];
    [self.progressiveView setAutoresizingMask:UIViewAutoresizingFlexibleRightMargin|UIViewAutoresizingFlexibleLeftMargin];
    [self addSubview:self.progressiveView];
}
return self;
}

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse*)response{

expectedLength+=response.expectedContentLength;
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{  

@try{

int index=[self.urlConnections indexOfObject:connection];
progressValue+=((float)((float)data.length/(float)expectedLength))*0.9;
[self.progressiveView setProgress:progressValue];
[[self.preCacheDatas objectAtIndex:index] appendData:data];
}
@catch (NSException *exception){
}
}
于 2012-09-28T07:35:46.220 に答える
0

UI のメイン スレッドにプログレス バーを表示しないでください。

最善の方法は、別のスレッドを作成し、そこにプログレス バーを配置することです。このスレッドにパーセンテージなどの更新情報を送信して、好きな速度で更新することができます。

ダウンロードが完了したら、スレッドを強制終了するか、バックグラウンドで後続のダウンロードのためにそのままにしておくことができます。

于 2012-09-28T07:13:19.503 に答える