封裝 MBProgressHud ==================================== #import "MBProgressHUD.h" @interface MBProgressHUD (Add) + (void)showError:(NSString *)error toView:(UIView *)view; + (MBProgressHUD *)showMessag:(NSString *)message toView:(UIView *)view; @end ============================ #import "MBProgressHUD+Add.h" @implementation MBProgressHUD (Add) #pragma mark 顯示錯誤信息 + (void)showError:(NSString *)error toView:(UIView *)view{ // 快速顯示一個提示信息 MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:view animated:YES]; hud.labelText = error; // 設置圖片 hud.customView = [[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"alert_failed_icon.png"]] autorelease]; // 再設置模式 hud.mode = MBProgressHUDModeCustomView; // 隱藏時候從父控件中移除 hud.removeFromSuperViewOnHide = YES; // 1秒之后再消失 [hud hide:YES afterDelay:1]; } #pragma mark 顯示一些信息 + (MBProgressHUD *)showMessag:(NSString *)message toView:(UIView *)view { // 快速顯示一個提示信息 MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:view animated:YES]; hud.labelText = message; // 隱藏時候從父控件中移除 hud.removeFromSuperViewOnHide = YES; // YES代表需要蒙版效果 //hud.dimBackground = YES; return hud; } @end
webview中MBPress的用法
#import "OauthController.h" #import "MBProgressHUD+Add.h" #import "WeiboAccount.h" #import "User.h" #import "UserMgr.h" @interface OauthController () { UIWebView *_webView; } @end @implementation OauthController #pragma mark - 生命周期方法 - (void)loadView { CGRect frame = [UIScreen mainScreen].applicationFrame; _webView = [[[UIWebView alloc] initWithFrame:frame] autorelease]; self.view = _webView; } - (void)viewDidLoad { [super viewDidLoad]; // 授權成功后,會跳到回調地址,並且把access_token拼接到回調地址后面 // reponse_type=token代表授權成功后直接返回access_token NSString *str = [kOAuthURL stringByAppendingFormat:@"?%@=%@&%@=%@&display=mobile&response_type=token", kClientId, kAppKey, kRedirectURIKey, kRedirectURI]; [_webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:str]]]; _webView.delegate = self; } #pragma mark - UIWebView代理方法 - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { NSString *url = request.URL.absoluteString; NSRange range = [url rangeOfString:@"access_token"]; int location = range.location; // 說明這是含有access_token的回調地址 if (location != NSNotFound) { // 截取后面的參數字符串 NSString *paramStr = [url substringFromIndex:location]; // 切割所有的參數 NSArray *params = [paramStr componentsSeparatedByString:@"&"]; // access_token=2.00iEK52CsE94CDd31b67b95dEUONIB // expires_in=157678625 // uid=2148327324 // 初始化賬號 WeiboAccount *account = [WeiboAccount account]; // 遍歷所有的參數 for (NSString *param in params) { NSRange tokenRange = [param rangeOfString:kAccessToken]; NSRange expiresRange = [param rangeOfString:kExpiresIn]; NSRange uidRange = [param rangeOfString:KUid]; // 找到了accessToken if (tokenRange.location != NSNotFound) { account.accessToken = [param substringFromIndex:tokenRange.location + tokenRange.length + 1]; } else if(expiresRange.location != NSNotFound) { // 找到了expiresIn account.expiresIn = [[param substringFromIndex:expiresRange.location + expiresRange.length + 1] longLongValue]; } else if(uidRange.location != NSNotFound) { // 找到了uid account.uid = [param substringFromIndex:uidRange.location + uidRange.length + 1]; } } // 獲取用戶數據 UserMgr *mgr = [UserMgr mgr]; [mgr queryUserWithUid:account.uid]; mgr.queryUserBlock = ^(User *user, NSString *error) { // 設置賬號昵稱 account.screenName = user.screenName; // 將賬號寫入沙盒 NSString *documents = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]; NSString *path = [documents stringByAppendingPathComponent:kAccountFile]; [NSKeyedArchiver archiveRootObject:account toFile:path]; [MBProgressHUD hideHUDForView:self.view animated:YES]; // 關閉當前控制器 [self dismissViewControllerAnimated:YES completion:nil]; }; return NO; } return YES; } - (void)webViewDidStartLoad:(UIWebView *)webView { self.title = kLoadingMsg; [MBProgressHUD showMessag:kLoadingMsg toView:self.view]; } - (void)webViewDidFinishLoad:(UIWebView *)webView { self.title = [webView stringByEvaluatingJavaScriptFromString:@"document.title"]; [MBProgressHUD hideHUDForView:self.view animated:YES]; } @end