IOS开发UI篇之──自定义加载等待框(MBProgressHUD)
這里介紹一下網友開源的MBProgressHUD類,實現等待框,
一、網上下載 ?MBProgessHUD 類文件,直接導入到工程即可
二、示例分析
在我的工程中示例如下:
1)在ShowImageViewController.h頭文件代碼如下:
#import <UIKit/UIKit.h>
#import "MBProgressHUD.h"
@interface ShowImageViewController :?UIViewController <MBProgressHUDDelegate>{
? ? NSString? ? ? ? ?*_picUrlString;
? ? UIImageView? ? ? *_imageView;
? ??MBProgressHUD? ? *_progressHUD;?
}
@property (nonatomic, copy) NSString ? ? ? ? ? *picUrlString;
@property (nonatomic, retain) IBOutlet ? ? ? ? UIImageView *imageView;
@property (nonatomic, retain) MBProgressHUD? ? *progressHUD;
//請求圖片資源
-(void)imageResourceRequest;
//顯示圖片信息
-(void)displayImage:(UIImage *)image;
- (IBAction)dismissModealView:(id)sender;
-(void)removeModalView;
@end
2)在ShowImageViewController.m實現文件代碼如下:
#import "ShowImageViewController.h"
#import <QuartzCore/QuartzCore.h>
@implementation ShowImageViewController
@synthesize picUrlString = _picUrlString;
@synthesize imageView = _imageView;
@synthesize progressHUD = _progressHUD;
- (void)viewDidLoad
{
? ? [super viewDidLoad];
? ? // Do any additional setup after loading the view from its nib.
? ? self.view.backgroundColor = [UIColor grayColor];
? ? self.view.alpha = 0.8;
?? ?
? ? //設置圖片為圓角
? ? self.imageView.backgroundColor = [UIColor clearColor];
? ? self.imageView.layer.borderColor = [UIColor lightGrayColor].CGColor;
? ? self.imageView.layer.borderWidth = 5.0;
? ? self.imageView.layer.masksToBounds = YES;?
? ? self.imageView.layer.cornerRadius = 10.0;?
}
-(void)viewWillAppear:(BOOL)animated
{
? ? [super viewWillAppear:animated];
? ? //當進入視圖時,重新設置imageView
? ? [self.imageView setImage:nil];
? ? [self.imageView setFrame:CGRectMake(160, 200, 0, 0)];
? ? //顯示加載等待框
? ? self.progressHUD = [[MBProgressHUD alloc] initWithView:self.view];
? ? [self.view addSubview:self.progressHUD];
? ? [self.view bringSubviewToFront:self.progressHUD];
? ? self.progressHUD.delegate = self;
? ? self.progressHUD.labelText = @"加載中...";
? ? [self.progressHUD show:YES];
?? ?
? ? //開啟線程,請求圖片資源
? ? [NSThread detachNewThreadSelector:@selector(imageResourceRequest) toTarget:self withObject:nil];
}
//請求圖片資源
-(void)imageResourceRequest
{
? ? NSAutoreleasePool ? *pool = [[NSAutoreleasePool alloc] init];
? ? //根據網絡數據,獲得到image資源
? ? NSData? *data = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:self.picUrlString]];
? ? UIImage *image = [[UIImage alloc] initWithData:data];
? ? [data release];
? ? //回到主線程,顯示圖片信息
? ? [self performSelectorOnMainThread:@selector(displayImage:) withObject:image waitUntilDone:NO];
? ? [image release];
?? ?
? ? [pool release];
}
//顯示圖片信息
-(void)displayImage:(UIImage *)image
{
? ? //若self.progressHUD為真,則將self.progressHUD移除,設為nil
? ? if (self.progressHUD){
? ? ? ? [self.progressHUD removeFromSuperview];
? ? ? ? [self.progressHUD release];
? ? ? ? self.progressHUD = nil;
? ? }
?? ?
? ? //圖片慢慢放大動畫效果
? ? [self.imageView setImage:image];
? ? [UIView beginAnimations:nil context:nil];
? ? [UIView setAnimationDuration:0.5];
? ? [self.imageView setFrame:CGRectMake(40, 100, 240, 160)];
? ? [UIView commitAnimations];
?? ?
}
- (void)viewDidUnload
{
? ? [self setImageView:nil];
? ? [super viewDidUnload];
? ? // Release any retained subviews of the main view.
? ? // e.g. self.myOutlet = nil;
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
? ? // Return YES for supported orientations
? ? return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
- (IBAction)dismissModealView:(id)sender {? ?
? ? //設置定時器,當動畫結束時,子視圖從父視圖中移除
? ? [NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(removeModalView) userInfo:nil repeats:NO];
?? ?
? ? [UIView beginAnimations:nil context:nil];
? ? [UIView setAnimationDuration:0.5];
? ? [self.imageView setFrame:CGRectMake(160, 200, 0, 0)];
? ? [UIView commitAnimations];
?? ?
}
-(void)removeModalView
{
? ? [self.view removeFromSuperview];
}
#pragma mark -
#pragma mark MBProgressHUDDelegate methods
- (void)hudWasHidden:(MBProgressHUD *)hud {
? ? NSLog(@"Hud: %@", hud);
? ? // Remove HUD from screen when the HUD was hidded
? ? [self.progressHUD removeFromSuperview];
? ? [self.progressHUD release];
? ? self.progressHUD = nil;
}
- (void)dealloc
{
? ? [_picUrlString release];
? ? [_imageView release];
? ? [super dealloc];
}
@end
三、效果展示
四、總結
利用MBProgressHUD實現加載等待框,視覺效果大大提高
轉載于:https://www.cnblogs.com/snake-hand/archive/2012/08/13/2636219.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的IOS开发UI篇之──自定义加载等待框(MBProgressHUD)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Holedox Moving
- 下一篇: HDOJ---2236 无题II