IOS开发基础知识--碎片11

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

1:AFNetwork判断网络状态

#import “AFNetworkActivityIndicatorManager.h"- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {//网络[[AFNetworkActivityIndicatorManager sharedManager] setEnabled:YES];

[[AFNetworkReachabilityManager sharedManager] startMonitoring];//网络状态判断[[AFNetworkReachabilityManager sharedManager] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {switch(status) {caseAFNetworkReachabilityStatusNotReachable:{

[self showMBPHudTipStr:@"当前无网络连接"];

break;

}caseAFNetworkReachabilityStatusReachableViaWiFi:{

[LogUtil logUtilstring:@"WiFi网络"];

break;

}caseAFNetworkReachabilityStatusReachableViaWWAN:{

[self showMBPHudTipStr:@"无线网络"];

break;

}default:

break;

}

}];returnYES;

}

2:UIButton倒计时

当在倒计时uibutton不能被响应事件;-(void)startTime{

__blockinttimeout=60;//倒计时时间dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0);

dispatch_source_t _timer= dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER,0,0,queue);

dispatch_source_set_timer(_timer,dispatch_walltime(NULL,0),1.0*NSEC_PER_SEC,0);//每秒执行dispatch_source_set_event_handler(_timer, ^{if(timeout<=0){//倒计时结束,关闭dispatch_source_cancel(_timer);

dispatch_async(dispatch_get_main_queue(),^{//设置界面的按钮显示 根据自己需求设置[self.againBtn setTitle:@"重发验证码"forState:UIControlStateNormal];

self.againBtn.userInteractionEnabled=YES;

self.labNoMessage.text=@"没有收到验证码吗?";

self.labNoMessage.textColor=[UIColor redColor];

});

}else{intseconds = timeout %60;

NSString*strTime = [NSString stringWithFormat:@"%.2d", seconds];

dispatch_async(dispatch_get_main_queue(),^{//设置界面的按钮显示 根据自己需求设置[self.againBtn setTitle:[NSString stringWithFormat:@"重发激活邮件(%@)",strTime] forState:UIControlStateNormal];

self.againBtn.userInteractionEnabled=NO;

self.labNoMessage.text=@"激活邮件发送成功";

self.labNoMessage.textColor=[UIColor colorWithHexString:@"84BF20"];

});

timeout--;

}

});

dispatch_resume(_timer);

}

3:判断iphone设备

#defineIS_IPAD (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)#defineIS_IPHONE (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)#defineIS_RETINA ([[UIScreen mainScreen] scale] >= 2.0)#defineSCREEN_WIDTH ([[UIScreen mainScreen] bounds].size.width)#defineSCREEN_HEIGHT ([[UIScreen mainScreen] bounds].size.height)#defineSCREEN_MAX_LENGTH (MAX(SCREEN_WIDTH, SCREEN_HEIGHT))#defineSCREEN_MIN_LENGTH (MIN(SCREEN_WIDTH, SCREEN_HEIGHT))#defineIS_IPHONE_4_OR_LESS (IS_IPHONE && SCREEN_MAX_LENGTH < 568.0)#defineIS_IPHONE_5 (IS_IPHONE && SCREEN_MAX_LENGTH == 568.0)#defineIS_IPHONE_6 (IS_IPHONE && SCREEN_MAX_LENGTH == 667.0)#defineIS_IPHONE_6P (IS_IPHONE && SCREEN_MAX_LENGTH == 736.0)

4:在IOS8以下报一个自动布局的BUG,而在IOS8却能正常运行

会导致APP挂掉,BUG内容:

Terminating app due to uncaught exception ‘NSInternalInconsistencyException’, reason: ‘Auto Layout still required after executing-layoutSubviews.

UITableView’s implementation of -layoutSubviews needs to call super.’- (void)layoutSubviews

{//自动布局的内容放在super layoutSubviews前面[self _updateConstraints];

[super layoutSubviews];

}

5:与JS交互,并把JS代码兼容android跟IOS

JS代码:

$(function () {varu = navigator.userAgent, app =navigator.appVersion;varisAndroid = u.indexOf('Android') > -1|| u.indexOf('linux') > -1;//android终端或者uc浏览器varisiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/);//ios终端if(isAndroid) {

$('#btn_Success').attr('href','javascript:mailActive.backHome()');

}elseif(isiOS) {

$('#btn_Success').attr('href','protoclo://backHome');

}

});

而IOS则是shouldStartLoadWithRequest:-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType

{

NSString*newURL=[[request URL] absoluteString];if([newURL hasprefix:@"protoclo://"])

{

NSArray*stringArray=[newURL componentsSeparatedByString:@"//"];if(stringArray.count>1&&[[stringArray objectAtIndex:1] isEqualToString:@"backHome"]) {

[self webJavascriptBackHome];

}

}returnYES;

}

注:比较好IOS的JS交互第三方插件WebViewJavascriptBridge;在IOS开发调试内嵌webView时可以用Safari进行调试,它可以设置出开发模式菜单,开发->ios simulator 就可以实现查看网页的运行详情(Safari->偏好设置-高级-在菜单中显示“开发”);

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航