UIWebView 的加载

2024-04-19 08:48
文章标签 加载 uiwebview

本文主要是介绍UIWebView 的加载,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、初始化与三种加载方式

     UIWebView继承与UIView,因此,其初始化方法和一般的view一样,通过alloc和init进行初始化,其加载数据的方式有三种:

第一种:

- (void)loadRequest:(NSURLRequest *)request;

这是加载网页最常用的一种方式,通过一个网页URL来进行加载,这个URL可以是远程的也可以是本地的,例如我加载百度的主页:

?
1
2
3
     UIWebView * view = [[UIWebView alloc]initWithFrame:self.view.frame];
     [view loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@ "http://www.baidu.com" ]]];
     [self.view addSubview:view];

会得到如下的效果:


第二种:

- (void)loadHTMLString:(NSString *)string baseURL:(NSURL *)baseURL;

这个方法需要将httml文件读取为字符串,其中baseURL是我们自己设置的一个路径,用于寻找html文件中引用的图片等素材。

第三种:

- (void)loadData:(NSData *)data MIMEType:(NSString *)MIMEType textEncodingName:(NSString *)textEncodingName baseURL:(NSURL *)baseURL;

这个方式使用的比较少,但也更加自由,其中data是文件数据,MIMEType是文件类型,textEncodingName是编码类型,baseURL是素材资源路径。

二、一些常用的属性和变量

@property (nonatomicassignid <UIWebViewDelegate> delegate;

设置webView的代理

@property (nonatomicreadonlyretainUIScrollView *scrollView;

内置的scrollView

@property (nonatomicreadonlyretainNSURLRequest *request;

URL请求

- (void)reload;

重新加载数据

- (void)stopLoading;

停止加载数据

- (void)goBack;

返回上一级

- (void)goForward;

跳转下一级

@property (nonatomicreadonlygetter=canGoBack) BOOL canGoBack;

获取能否返回上一级

@property (nonatomicreadonlygetter=canGoForward) BOOL canGoForward;

获取能否跳转下一级

@property (nonatomicreadonlygetter=isLoading) BOOL loading;

获取是否正在加载数据

- (NSString *)stringByEvaluatingJavaScriptFromString:(NSString*)script;

通过javaScript操作web数据

@property (nonatomicBOOL scalesPageToFit;

设置是否缩放到适合屏幕大小

@property (nonatomicUIDataDetectorTypes dataDetectorTypes NS_AVAILABLE_IOS(3_0);

设置某些数据变为链接形式,这个枚举可以设置如电话号,地址,邮箱等转化为链接

@property (nonatomicBOOL allowsInlineMediaPlayback NS_AVAILABLE_IOS(4_0);

设置是否使用内联播放器播放视频

@property (nonatomicBOOL mediaPlaybackRequiresUserAction NS_AVAILABLE_IOS(4_0);

设置视频是否自动播放

@property (nonatomicBOOL mediaPlaybackAllowsAirPlay NS_AVAILABLE_IOS(5_0);

设置音频播放是否支持ari play功能

@property (nonatomicBOOL suppressesIncrementalRendering NS_AVAILABLE_IOS(6_0);

设置是否将数据加载如内存后渲染界面

@property (nonatomicBOOL keyboardDisplayRequiresUserAction NS_AVAILABLE_IOS(6_0);

设置用户交互模式

三、iOS7中的一些新特性

下面这些属性是iOS7之后才有的,通过他们可以设置更加有趣的web体验

@property (nonatomicUIWebPaginationMode paginationMode NS_AVAILABLE_IOS(7_0);

这个属性用来设置一种模式,当网页的大小超出view时,将网页以翻页的效果展示,枚举如下:

?
1
2
3
4
5
6
7
typedef  NS_ENUM(NSInteger, UIWebPaginationMode) {
     UIWebPaginationModeUnpaginated, //不使用翻页效果
     UIWebPaginationModeLeftToRight, //将网页超出部分分页,从左向右进行翻页
     UIWebPaginationModeTopToBottom, //将网页超出部分分页,从上向下进行翻页
     UIWebPaginationModeBottomToTop, //将网页超出部分分页,从下向上进行翻页
     UIWebPaginationModeRightToLeft //将网页超出部分分页,从右向左进行翻页
};

@property (nonatomicCGFloat pageLength NS_AVAILABLE_IOS(7_0);

设置每一页的长度,如果设置的数据小于屏幕的宽度时,就会让页面只显示设置的那部分距离。

@property (nonatomicCGFloat gapBetweenPages NS_AVAILABLE_IOS(7_0);

设置每一页的间距

@property (nonatomicreadonlyNSUInteger pageCount NS_AVAILABLE_IOS(7_0);

只读属性,获取分页数

还有一些属性必然必须在网页控制器前一个加上hiddenwhenpushed来隐藏状态栏

四、webView协议中的方法

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType;

准备加载内容时调用的方法,通过返回值来进行是否加载的设置

- (void)webViewDidStartLoad:(UIWebView *)webView;

开始加载时调用的方法


- (void)webViewDidFinishLoad:(UIWebView *)webView;

结束加载时调用的方法

如果想要通过JS来操作页面,就必须在网页加载完成后再执行JS代码,也就是在这个方法里。


- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error;

加载失败时调用的方法


这篇关于UIWebView 的加载的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/917081

相关文章

SpringBoot项目启动后自动加载系统配置的多种实现方式

《SpringBoot项目启动后自动加载系统配置的多种实现方式》:本文主要介绍SpringBoot项目启动后自动加载系统配置的多种实现方式,并通过代码示例讲解的非常详细,对大家的学习或工作有一定的... 目录1. 使用 CommandLineRunner实现方式:2. 使用 ApplicationRunne

SpringBoot项目删除Bean或者不加载Bean的问题解决

《SpringBoot项目删除Bean或者不加载Bean的问题解决》文章介绍了在SpringBoot项目中如何使用@ComponentScan注解和自定义过滤器实现不加载某些Bean的方法,本文通过实... 使用@ComponentScan注解中的@ComponentScan.Filter标记不加载。@C

springboot 加载本地jar到maven的实现方法

《springboot加载本地jar到maven的实现方法》如何在SpringBoot项目中加载本地jar到Maven本地仓库,使用Maven的install-file目标来实现,本文结合实例代码给... 在Spring Boothttp://www.chinasem.cn项目中,如果你想要加载一个本地的ja

最好用的WPF加载动画功能

《最好用的WPF加载动画功能》当开发应用程序时,提供良好的用户体验(UX)是至关重要的,加载动画作为一种有效的沟通工具,它不仅能告知用户系统正在工作,还能够通过视觉上的吸引力来增强整体用户体验,本文给... 目录前言需求分析高级用法综合案例总结最后前言当开发应用程序时,提供良好的用户体验(UX)是至关重要

MyBatis延迟加载的处理方案

《MyBatis延迟加载的处理方案》MyBatis支持延迟加载(LazyLoading),允许在需要数据时才从数据库加载,而不是在查询结果第一次返回时就立即加载所有数据,延迟加载的核心思想是,将关联对... 目录MyBATis如何处理延迟加载?延迟加载的原理1. 开启延迟加载2. 延迟加载的配置2.1 使用

Android WebView的加载超时处理方案

《AndroidWebView的加载超时处理方案》在Android开发中,WebView是一个常用的组件,用于在应用中嵌入网页,然而,当网络状况不佳或页面加载过慢时,用户可能会遇到加载超时的问题,本... 目录引言一、WebView加载超时的原因二、加载超时处理方案1. 使用Handler和Timer进行超

Flutter 进阶:绘制加载动画

绘制加载动画:由小圆组成的大圆 1. 定义 LoadingScreen 类2. 实现 _LoadingScreenState 类3. 定义 LoadingPainter 类4. 总结 实现加载动画 我们需要定义两个类:LoadingScreen 和 LoadingPainter。LoadingScreen 负责控制动画的状态,而 LoadingPainter 则负责绘制动画。

使用WebP解决网站加载速度问题,这些细节你需要了解

说到网页的图片格式,大家最常想到的可能是JPEG、PNG,毕竟这些老牌格式陪伴我们这么多年。然而,近几年,有一个格式悄悄崭露头角,那就是WebP。很多人可能听说过,但到底它好在哪?你的网站或者项目是不是也应该用WebP呢?别着急,今天咱们就来好好聊聊WebP这个图片格式的前世今生,以及它值不值得你花时间去用。 为什么会有WebP? 你有没有遇到过这样的情况?网页加载特别慢,尤其是那

gazebo 已加载模型但无法显示

目录 写在前面的话问题一:robot_state_publisher 发布机器人信息失败报错一 Error: Error document empty.报错二 .xcaro 文件中有多行注释成功启动 问题二:通过 ros2 启动 gazebo 失败成功启动 问题三:gazebo 崩溃和无法显示模型问题四: 缺少 robot_description 等话题正确的输出 写在前面的话

JVM类的加载器及加载过程

类的加载器及加载过程 文章目录 类的加载器及加载过程类的加载过程加载:链接(验证、准备、解析):初始化: 类加载器的分类引导类加载器:BootstrapClassLoader 启动类加载器( C/C++实现,嵌套在JVM内部)自定义类加载器(所有派生于抽象类ClassLoader的类加载器)获取ClassLoader的途径 双亲委派机制(重点)判断两个Class对象是否为同一个类