1.去除导航栏下面的白线
UIImageView * backGroundView = [self.navigationController.navigationBar valueForKey:@"_backgroundView"];
for(UIView *view in backGroundView.subviews) {
if(view.bounds.size.height <= 1.0f) {
[view removeFromSuperview];
}
}
iOS7的Cell的分割线宽度不满屏,解决方法
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0) {
[_tableView setSeparatorInset:(UIEdgeInsetsMake(0, 0, 0, 0))];
}
webView返回上一级
[webView goBack];
webView获取html标题、内容
- (void)webViewDidFinishLoad:(UIWebView *)webView {
UIWebView *web = webView;
**//获取所有的html**
NSString *allHtmlInfo = [web stringByEvaluatingJavaScriptFromString:@"document.documentElement.innerHTML"];
NSLog(@"%@",allHtmlInfo);
**//获取网页title**
NSString *titleHtmlInfo = [web stringByEvaluatingJavaScriptFromString:@"document.title"];
NSLog(@"%@",titleHtmlInfo);
**//获取网页的一个值**
NSString *numHtmlInfo = [web stringByEvaluatingJavaScriptFromString:@"document.getElementById('title').innerText"];
NSLog(@"%@",numHtmlInfo);
}
JsExport
1.加框架 《JavaScriptCore.framework》
2.创建你的对外接口类
类继承自NSObject 加入<JavaScriptCore/JavaScriptCore.h>头文件
声明一个协议 协议继承<JSExport>
自己创建的类遵循你所创建的协议,需要对外的方法声明为协议方法,在自己的类中进行实现
在自己webView类 或者webView的webViewDidFinishLoad方法中,进行设置(导入自己的JSExport类)
//上下文
JSContext *context = [webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
//类进行实例化
MyJsExport *testJO=[[MyJsExport alloc]init];
//对上下文进行操作 control为传给后台的对象,用对象调用类中的方法即可
//后台调用格式为control.openCall('参数A','参数B')
context[@"control"]=testJO;
另一种实现方式是直接在webViewDidFinishLoad方法中实现,不需要创建JSExport
JSContext *context = [webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
context[@"control"] = ^() {
//获取后台返回的数据
NSArray *args = [JSContext currentArguments];
NSLog(@"args.count--->%ld",(unsigned long)args.count);
JSValue * json = args[0];
if (json.toString.length != 0) {
[[UIApplication sharedApplication]openURL:[NSURL URLWithString:json.toString]];
}
NSLog(@"----------%@",json.toString);
};
这种方式实现的弊端,只能传参数,没有方法 调用对象,当有判断条件时,代码量多,且不利于维护,不建议