蓝懿ios技术交流和心得分享 16.1.27

UIWebView可以让你创建一个网页浏览器,类似safari,而不是在程序中启动safsri哦。是不是觉得很棒呢?废话少说,切入正题。

一、创建UIWebView

  1. CGRect bouds = [[UIScreen manScreen]applicationFrame];  
  • UIWebView* webView = [[UIWebView alloc]initWithFrame:bounds];  

二、设置属性

  1. webView.scalespageToFit = YES;

//自动对页面进行缩放以适应屏幕 

  

  • webView.detectsPhoneNumbers = YES;

//自动检测网页上的电话号码,单击可以拨打

  

三、显示网页视图UIWebView

  1. [self.view addSubview:webView];  

四、加载内容

  1. NSURL* url = [NSURL URLWithString:@

"http://www.linuxidc.com"

];//创建URL  

  • NSURLRequest* request = [NSURLRequest requestWithURL:url];

//创建NSURLRequest 

  

  • [webView loadRequest:request];

//加载

  

也可以加载一个本地资源:

  1. NSURL* url = [NSURL   fileURLWithPath:filePath];

//创建URL 

  

  • NSURLRequest* request = [NSURLRequest requestWithURL:url];

//创建NSURLRequest 

  

  • [webView loadRequest:request];

//加载

  

UIWebView 还支持将一个NSString对象作为源来加载。你可以为其提供一个基础URL,来指导UIWebView对象如何跟随链接和加载远程资源:

  1. [webView loadHTMLString:myHTML baseURL:[NSURL URLWithString:@

"http://88181.com"

]];  

五、导航

UIWebView类内部会管理浏览器的导航动作,通过goForward和goBack方法你可以控制前进与后退动作:

 

  1. [webView goBack];  
  • [webView goForward];  
  • [webView reload];

//重载 

  

  • [webView stopLoading];

//取消载入内容

  

六、UIWebViewDelegate委托代理

UIWebView支持一组委托方法,这些方法将在特定时间得到通知。要使用这些方法,必须先设定webView的委托:

 

  1. webView.delegate = self;  

下面每个委托方法的第一个参数都是指向一个UIwebview的指针,因此你可以将一个委托用于多个网页视图。

 

  1. -(BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*) reuqest navigationType:(UIWebViewNavigationType)navigationType;

//当网页视图被指示载入内容而得到通知。应当返回YES,这样会进行加载。通过导航类型参数可以得到请求发起的原因,可以是以下任意值: 

  

  • UIWebViewNavigationTypeLinkClicked  
  • UIWebViewNavigationTypeFormSubmitted  
  • UIWebViewNavigationTypeBackForward  
  • UIWebViewNavigationTypeReload  
  • UIWebViewNavigationTypeFormResubmitted  
  • UIWebViewNavigationTypeOther  

 

  1. -(

void

)webViewDidStartLoad:(UIWebView*)webView ;

//当网页视图已经开始加载一个请求后,得到通知。

  

 

  1. -(

void

)webViewDidFinishLoad:(UIWebView*)webView ;

//当网页视图结束加载一个请求之后,得到通知。

  

 

  1. -(

void

)webView:(UIWebView*)webView  DidFailLoadWithError:(NSError*)error;

//当在请求加载中发生错误时,得到通知。会提供一个NSSError对象,以标识所发生错误类型。

  

1、NSNotification消息的同步性

①NSNotification使用的是同步操作。即如果你在程序中的A位置post了一个NSNotification,在B位置注册了一个observer,通知发出后,必须等到B位置的通知回调执行完以后才能返回到A处继续往下执行。

因此,不要过多的或者低效的使用NSNotification,《Cocoa基本原理指南》一文推荐的方式是通过一些“中间的”观察者将通告的结果传递给它们可以访问的对象。

②如果想让NSNotification的post处和observer处异步执行,可以通过NSNotificationQueue实现。

 

2、多个观察者的执行顺序

对于同一个通知,如果注册了多个观察者,则这多个观察者的执行顺序和他们的注册顺序是保持一致的。

 

3、NSNotification通知转发线程

①NSNotificationCenter在转发NSNotification消息的时候,在哪个线程中post,就在哪个线程中转发。换句话说,不管你的observer是在哪个线程,observer的回调方法执行线程都和post的线程保持一致。

②如果想让post的线程和转发的线程不同,可以通过NSNotification重定向技术实现。

4、addObserver和removeObserver必须成对出现

官方文档中是这样描述的:

The notification center does not retain its observers, therefore, you must ensure that you unregister observers (usingremoveObserver: or removeObserver:name:object:) before they are deallocated. (If you don’t, you will generate a runtime error if the center sends a message to a freed object.)

再addObserver的时候,notification center并不增加观察者对象的引用计数,因此,在观察者对象被释放之前我们必须保证它们被从观察队列中移除,否则后果很明显!

学习ios  重要还是要理清楚思路  在做或者看老师代码的时候 自己多想想为什么  不要自己看着就抄       另外还是要推荐一下 蓝懿IOS这个培训机构  和刘国斌老师刘国斌老师还是很有名气的,听朋友说刘老师成立了蓝懿iOS,,老师讲课方式很独特,能够尽量让每个人都能弄明白,有的比较难懂的地方,如果有的地方还是不懂得话,老师会换个其它方法再讲解,这对于我们这些学习iOS的同学是非常好的,多种方式的讲解会理解得更全面,这个必须得给个赞,嘻嘻,还有就是这里的学习环境很好,很安静,可以很安心的学习,安静的环境是学习的基础,小班讲课,每个班20几个学生,学习氛围非常好,每天都学到9点多才离开教室,练习的时间很充裕,而且如果在练习的过程中有什么困难,随时可以向老师求助,不像其它机构,通过视频教学,有的甚至学完之后都看不到讲师本人,问点问题都不方便,这就是蓝懿与其它机构的区别,相信在刘国斌老师的细心指导下,每个蓝懿学员都能找到满意的工作,加油!

  •                                                                   写博客第一百零九天;

                                                                              QQ:565803433

你可能感兴趣的:(蓝懿ios技术交流和心得分享 16.1.27)