MBProgressHUD的多种样式的简单整合

来源:互联网 发布:联通java应用服务器 编辑:程序博客网 时间:2024/06/05 19:24

</pre><span style="font-size:18px">参照网上查阅的一些资料对第三方类库MBProgressHUD的多种样式的简单整合!</span><p></p><p><span style="font-size:18px">在你所需要的工程里面导入<span style="color:rgb(232,35,0); font-family:Menlo">MBProgressHUD.h和MBProgressHUD.m两个文件</span></span></p><p><span style="font-size:18px">首先要初始化生成一个HUD的同时选择添加到你所需要的视图上面</span></p><p></p><pre name="code" class="objc">MBProgressHUD *HUD = [[MBProgressHUD alloc] initWithView:self.view];[self.view addSubview:HUD];

选择需要对HUD的一些基本属性进行操作修改

其中HUD.mode是选择HUD样式(具体样式参考代码实现效果)

HUD.labelText = @"正在努力加载中...";    HUD.detailsLabelText = @"loading...";//    HUD.color = [UIColor colorWithRed:0.22 green:0.50 blue:0.75 alpha:0.68];//设置整个HUD背景色        HUD.square = YES;//设置HUD是否方形显示
添加上HUD的监听即可实现简单的HUD 效果
[HUD showWhileExecuting:@selector(myProgressTask) onTarget:self withObject:nil animated:YES];


要想实现MBPreogressHUD协议里面的东西对HUD添加代理delegate即可


具体的完整效果模式需要参考MBPreogressHUD的第三方源代码 如下

////  HudDemoViewController.m//  HudDemo////  Created by Matej Bukovinski on 30.9.09.//  Copyright bukovinski.com 2009. All rights reserved.//#import "HudDemoViewController.h"#import "MBProgressHUD.h"#import <unistd.h>#define SCREENSHOT_MODE 0#ifndef kCFCoreFoundationVersionNumber_iOS_8_0#define kCFCoreFoundationVersionNumber_iOS_7_0 847.20#endif@interface HudDemoViewController () <MBProgressHUDDelegate> {MBProgressHUD *HUD;long long expectedLength;long long currentLength;}@property (retain, nonatomic) IBOutletCollection(UIButton) NSArray *buttons;@end@implementation HudDemoViewController#pragma mark - Lifecycle methods- (void)viewDidLoad {UIView *content = [[self.view subviews] objectAtIndex:0];#if SCREENSHOT_MODE[content.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];#endifif (kCFCoreFoundationVersionNumber >= kCFCoreFoundationVersionNumber_iOS_7_0) {[self.buttons setValue:@5.f forKeyPath:@"layer.cornerRadius"];} else {[self.buttons setValue:nil forKey:@"backgroundColor"];}((UIScrollView *)self.view).contentSize = content.bounds.size;}- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {return YES;}- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation {UIView *content = [[self.view subviews] objectAtIndex:0];((UIScrollView *)self.view).contentSize = content.bounds.size;}- (void)dealloc {[_buttons release];[super dealloc];}#pragma mark - Actions- (IBAction)showSimple:(id)sender {// The hud will dispable all input on the view (use the higest view possible in the view hierarchy)HUD = [[MBProgressHUD alloc] initWithView:self.navigationController.view];[self.navigationController.view addSubview:HUD];// Regiser for HUD callbacks so we can remove it from the window at the right timeHUD.delegate = self;// Show the HUD while the provided method executes in a new thread[HUD showWhileExecuting:@selector(myTask) onTarget:self withObject:nil animated:YES];}- (IBAction)showWithLabel:(id)sender {HUD = [[MBProgressHUD alloc] initWithView:self.navigationController.view];[self.navigationController.view addSubview:HUD];HUD.delegate = self;HUD.labelText = @"Loading";[HUD showWhileExecuting:@selector(myTask) onTarget:self withObject:nil animated:YES];}- (IBAction)showWithDetailsLabel:(id)sender {HUD = [[MBProgressHUD alloc] initWithView:self.navigationController.view];[self.navigationController.view addSubview:HUD];HUD.delegate = self;HUD.labelText = @"Loading";HUD.detailsLabelText = @"updating data";HUD.square = YES;[HUD showWhileExecuting:@selector(myTask) onTarget:self withObject:nil animated:YES];}- (IBAction)showWithLabelDeterminate:(id)sender {HUD = [[MBProgressHUD alloc] initWithView:self.navigationController.view];[self.navigationController.view addSubview:HUD];// Set determinate modeHUD.mode = MBProgressHUDModeDeterminate;HUD.delegate = self;HUD.labelText = @"Loading";// myProgressTask uses the HUD instance to update progress[HUD showWhileExecuting:@selector(myProgressTask) onTarget:self withObject:nil animated:YES];}- (IBAction)showWIthLabelAnnularDeterminate:(id)sender {HUD = [[MBProgressHUD alloc] initWithView:self.navigationController.view];[self.navigationController.view addSubview:HUD];// Set determinate modeHUD.mode = MBProgressHUDModeAnnularDeterminate;HUD.delegate = self;HUD.labelText = @"Loading";// myProgressTask uses the HUD instance to update progress[HUD showWhileExecuting:@selector(myProgressTask) onTarget:self withObject:nil animated:YES];}- (IBAction)showWithLabelDeterminateHorizontalBar:(id)sender {HUD = [[MBProgressHUD alloc] initWithView:self.navigationController.view];[self.navigationController.view addSubview:HUD];// Set determinate bar modeHUD.mode = MBProgressHUDModeDeterminateHorizontalBar;HUD.delegate = self;// myProgressTask uses the HUD instance to update progress[HUD showWhileExecuting:@selector(myProgressTask) onTarget:self withObject:nil animated:YES];}- (IBAction)showWithCustomView:(id)sender {HUD = [[MBProgressHUD alloc] initWithView:self.navigationController.view];[self.navigationController.view addSubview:HUD];// The sample image is based on the work by http://www.pixelpressicons.com, http://creativecommons.org/licenses/by/2.5/ca/// Make the customViews 37 by 37 pixels for best results (those are the bounds of the build-in progress indicators)HUD.customView = [[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"37x-Checkmark.png"]] autorelease];// Set custom view modeHUD.mode = MBProgressHUDModeCustomView;HUD.delegate = self;HUD.labelText = @"Completed";[HUD show:YES];[HUD hide:YES afterDelay:3];}- (IBAction)showWithLabelMixed:(id)sender {HUD = [[MBProgressHUD alloc] initWithView:self.navigationController.view];[self.navigationController.view addSubview:HUD];HUD.delegate = self;HUD.labelText = @"Connecting";HUD.minSize = CGSizeMake(135.f, 135.f);[HUD showWhileExecuting:@selector(myMixedTask) onTarget:self withObject:nil animated:YES];}- (IBAction)showUsingBlocks:(id)sender {#if NS_BLOCKS_AVAILABLEMBProgressHUD *hud = [[MBProgressHUD alloc] initWithView:self.navigationController.view];[self.navigationController.view addSubview:hud];hud.labelText = @"With a block";[hud showAnimated:YES whileExecutingBlock:^{[self myTask];} completionBlock:^{[hud removeFromSuperview];[hud release];}];#endif}- (IBAction)showOnWindow:(id)sender {// The hud will dispable all input on the windowHUD = [[MBProgressHUD alloc] initWithView:self.view.window];[self.view.window addSubview:HUD];HUD.delegate = self;HUD.labelText = @"Loading";[HUD showWhileExecuting:@selector(myTask) onTarget:self withObject:nil animated:YES];}- (IBAction)showURL:(id)sender {NSURL *URL = [NSURL URLWithString:@"http://a1408.g.akamai.net/5/1408/1388/2005110403/1a1a1ad948be278cff2d96046ad90768d848b41947aa1986/sample_iPod.m4v.zip"];NSURLRequest *request = [NSURLRequest requestWithURL:URL];NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];[connection start];[connection release];HUD = [MBProgressHUD showHUDAddedTo:self.navigationController.view animated:YES];HUD.delegate = self;}- (IBAction)showWithGradient:(id)sender {HUD = [[MBProgressHUD alloc] initWithView:self.navigationController.view];[self.navigationController.view addSubview:HUD];HUD.dimBackground = YES;// Regiser for HUD callbacks so we can remove it from the window at the right timeHUD.delegate = self;// Show the HUD while the provided method executes in a new thread[HUD showWhileExecuting:@selector(myTask) onTarget:self withObject:nil animated:YES];}- (IBAction)showTextOnly:(id)sender {MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.navigationController.view animated:YES];// Configure for text only and offset downhud.mode = MBProgressHUDModeText;hud.labelText = @"Some message...";hud.margin = 10.f;hud.removeFromSuperViewOnHide = YES;[hud hide:YES afterDelay:3];}- (IBAction)showWithColor:(id)sender{HUD = [[MBProgressHUD alloc] initWithView:self.navigationController.view];[self.navigationController.view addSubview:HUD];// Set the hud to display with a colorHUD.color = [UIColor colorWithRed:0.23 green:0.50 blue:0.82 alpha:0.90];HUD.delegate = self;[HUD showWhileExecuting:@selector(myTask) onTarget:self withObject:nil animated:YES];}#pragma mark - Execution code- (void)myTask {// Do something usefull in here instead of sleeping ...sleep(3);}- (void)myProgressTask {// This just increases the progress indicator in a loopfloat progress = 0.0f;while (progress < 1.0f) {progress += 0.01f;HUD.progress = progress;usleep(50000);}}- (void)myMixedTask {// Indeterminate modesleep(2);// Switch to determinate modeHUD.mode = MBProgressHUDModeDeterminate;HUD.labelText = @"Progress";float progress = 0.0f;while (progress < 1.0f){progress += 0.01f;HUD.progress = progress;usleep(50000);}// Back to indeterminate modeHUD.mode = MBProgressHUDModeIndeterminate;HUD.labelText = @"Cleaning up";sleep(2);// UIImageView is a UIKit class, we have to initialize it on the main thread__block UIImageView *imageView;dispatch_sync(dispatch_get_main_queue(), ^{UIImage *image = [UIImage imageNamed:@"37x-Checkmark.png"];imageView = [[UIImageView alloc] initWithImage:image];});HUD.customView = [imageView autorelease];HUD.mode = MBProgressHUDModeCustomView;HUD.labelText = @"Completed";sleep(2);}#pragma mark - NSURLConnectionDelegete- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {expectedLength = MAX([response expectedContentLength], 1);currentLength = 0;HUD.mode = MBProgressHUDModeDeterminate;}- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {currentLength += [data length];HUD.progress = currentLength / (float)expectedLength;}- (void)connectionDidFinishLoading:(NSURLConnection *)connection {HUD.customView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"37x-Checkmark.png"]];HUD.mode = MBProgressHUDModeCustomView;[HUD hide:YES afterDelay:2];}- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {[HUD hide:YES];}#pragma mark - MBProgressHUDDelegate- (void)hudWasHidden:(MBProgressHUD *)hud {// Remove HUD from screen when the HUD was hidded[HUD removeFromSuperview];HUD = nil;}- (void)viewDidUnload {[self setButtons:nil];[super viewDidUnload];}@end





0 0
原创粉丝点击