[TwistedFate]UIWebView的简单使用

2024阅读AOSP源码的正确打开姿势 在Android系统开发中,阅读AOSP(Android Open Source Project)源码是非常重要的环节。然而,如何构建一个优雅的阅读环境却是一个不容忽视的问题。本文将介绍不同工具和方法下阅读AOSP源码的正确姿势,并对比其优缺点。 阅读详情

UIWebView

UIWebView就是一个可以帮我们打开网站的浏览器界面,我们对这个页面操作就相当于浏览器操作

UIWebView使用的三种情况

  1. 整个几面的排版比较复杂,需要很多判断
  2. 整个界面整体布局改变非常大
  3. 需要访问某个网站的时候

UIwebView的加载方式

  1. 利用requset加载
//  初始化一个NSURLRequset对象
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://pianke.me/webview/539e50698ead0ef96e0000a3"]];

// 初始化一个webView
    _webView = [[UIWebView alloc] initWithFrame:self.view.bounds];

//  利用request加载
[_webView loadRequest:request];

[self.view addSubview:_webView];
  1. 利用一个HTMLString加载
//  把网址转化成一个NSData
    NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://pianke.me/webview/539e50698ead0ef96e0000a3"]];

 //  把网站内容的二进制转化成为一个字符串
    NSString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

//  html语句中有head标签 可以通过这段代码来改变图片宽度    
string = [NSString stringWithFormat:@"<head><style>img{width:300px !important;}</style></head>%@",string];

//  替换html语句中的字段
string = [string stringByReplacingOccurrencesOfString:@"黑啤" withString:@"Agent Mahong"];

//  UIWebView第二种加载方式
[_webView loadHTMLString:string baseURL:nil];

 // 设置代理
    _webView.delegate = self;
    [self.view addSubview:_webView];

UIWebView常用代理方法实现

这个代理方法控制了我们的UIWebView是否能够加载,返回YES代表可以加载,返回NO代表不能架子啊 (UIWebView每次加载一个新的界面的时候都会执行这个方法)

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

    //  从NSURLRequset获取url
    NSURL *url = request.URL;

    //  从NSURL里面获取字符串
    NSString *str = url.absoluteString;
//    NSLog(@"%@",str);

    //  根据字符串来判断是否加载这个请求
    if ([str isEqualToString:kFirstAPI]) {

        return YES;

    }

    //  通过字符串参数获取到一个SEL类型的对象(SEL表示一个方法)
    SEL sss = NSSelectorFromString(@"viewDidLoad");

    //  让self去执行这个方法
    [self performSelector:sss withObject:nil afterDelay:0];

    return NO;

}

webView每次加载完毕之后就会执行这个代理方法

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

    //  使用WebView去执行一段JS脚本的代码,通过代码我们可以返回一个字符串
    //  获取webView高度
    CGFloat height = [[webView stringByEvaluatingJavaScriptFromString:@"document.body.scrollHeight;"] floatValue];

    NSLog(@"%f",height);

    webView.frame = CGRectMake(0, 0, 375, height);
    [webView sizeToFit];

    CGRect frame = webView.frame;

    NSLog(@"%f",frame.size.height);

}

在webView加载出来的界面添加控件

- (void)webViewDidFinishLoad:(UIWebView *)webView{
//  获取webView高度
    _webViewHeight = [[webView stringByEvaluatingJavaScriptFromString:@"document.body.scrollHeight"] floatValue];
        webView.scrollView.contentSize = CGSizeMake(kScreenWidth, _webViewHeight + 40);

//  在webView.scrollView上添加控件
.......

}
【SpringBoot 3.x 第56节】再见 Feign?原生 HTTP 接口强势上位,这才是微服务调用的正确姿势! 🏆本文收录于《滚雪球学SpringBoot 3》,专门攻坚指数提升,本年度国内最系统+最专业+最详细(永久更新)。    本专栏致力打造最硬核 SpringBoot3 从零基础到进阶系列学习内容,🚀均为全网独家首发,打造精品专栏,专栏持续更新中…欢迎大家订阅持续学习。 如果想快速定位学习,可以看这篇【SpringBoot3教程导航帖】,你想学习的都被收集在内,快速投入学习!!两不误。    若还想学习更多,可直接前往《滚雪球学SpringBoot(全版本合集)》,涵盖SpringBoot所有版本教学文章 阅读详情

相关推荐

硬件作品3----STM32F103RCT6最小系统板MCU配置

电路未调试成功,目前刚打板,后续需要补充或者改版另行注明。

weixin_58364194的博客 5567

UIWebView的简单使用

UIWebView主要有三种方法实现页面的装载,分别是: 1. (void)loadRequest:(NSURLRequest *)request; (直接装载URL) 2. (void)loadHTMLString:(NSString *)string baseURL:(NSU...

chuangyan8950的博客 192

麒麟系统下的多媒体革命:VLC在kylinV10上的性能优化与调试技巧

本文详细介绍了在麒麟kylinV10系统上优化VLC多媒体播放性能的实战技巧,特别针对飞腾FT-2000/4硬件平台。从源码编译调优到硬件加速配置,提供全面的性能提升方案,帮助开发者在国产操作系统上构建高效媒体播放环境。

weixin_29168675的博客 458

ios UIWebView 拦截webview用户触击了一个链接

pragma mark -- 拦截webview用户触击了一个链接 - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { //判断是否是单击 if

robinson_911的专栏 6884

Google OR-Tools的CP-SAT求解器,为什么比传统线性规划更适合你的组合优化问题?

本文深入解析Google OR-Tools中的CP-SAT求解器为何比传统线性规划更适合解决组合优化问题。CP-SAT融合约束规划与可满足性理论,原生支持复杂逻辑约束和离散决策,在物流、生产调度等领域展现出显著优势。通过技术对比和实战案例,展示CP-SAT在处理高组合复杂度问题时的卓越性能。

weixin_28700593的博客 927

小红书UID泄露风险揭秘:如何防止你的手机号被社工库关联(附防护指南)

本文揭示了小红书UID泄露的严重风险,详细解析了UID与手机号关联后被社工库利用的完整链条。通过分析黑产的数据整合技术,提供从基础到进阶的防护策略,包括密码管理、账号隔离和应急响应措施,帮助用户有效防范个人信息泄露风险。

ol789012345的博客 1517

iOS webview中在Safari中 打开文档 进行处理

- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType {    //判断是否是单击    if (navigationType == UIWebViewNavigation

wanglj7525的专栏 2372

【YOLO多模态检测顶刊】TGRS 2025范文解读,RGFNet 可见光-红外图像融合目标检测,2026年基于YOLO多模态融合属于发文热点,小论文和大论文通用,通读顶刊了解做实验和论文写作的全流程

🔥本文提出了一种反射率引导的渐进特征对齐网络(RGFNet)用于全天候无人机目标检测。该方法利用Retinex理论从可见光图像中提取光照不变的反射率特征,设计了反射率引导协同对齐模块(RCAM)实现跨模态双向特征对齐,并通过光照感知选择性融合模块(LSFM)在共享状态空间中进行高效特征交互。在DroneVehicle和DVTOD数据集上的实验表明,RGFNet分别达到81.4%和88.5%的mAP,显著优于现有方法。该方法有效解决了低光照条件下可见光-红外图像特征错位问题,为全天候无人机检测提供了新思路。

Ai缝合怪、助力小伙伴高效发论文 1079

UIWebView的一些用法总结

为什么80%的码农都做不了架构师?>>> ...

weixin_34409703的博客 265

基于Simulink的固态变压器(SST)多级协同控制

本文基于Simulink平台,详细介绍了固态变压器(SST)多级协同控制的建模与仿真方法。针对SST三级架构(AC-DC、DC-DC、DC-AC)存在的级间耦合问题,提出了纵向解耦与横向联动的协同控制策略。通过搭建10kV/400V级联型SST系统模型,实现了输入电压波动±20%或负载0-100%跳变时直流母线电压波动小于2%的控制目标。文章详细讲解了Simulink建模步骤、控制算法推导及工程部署建议,包括功率前馈控制、虚拟惯性算法等关键技术。仿真结果表明,该协同控制方案能有效抑制负载突变时的电压波动,为

MHD0815的博客 214

【WRF-Chem 工具】CAMStoWRF详解:CAMS数据下载及处理

【WRF-Chem 工具】CAMStoWRF详解:CAMS数据下载及处理

WW、forever的博客 196

iOS 获取UIWebView上面的按钮点击事件

在网上看到很多文章都说iOS的UIWebView比较耗内存,在我的项目中,最开始我也是用UIWebView来加载网页的。刚开始加载的是自己拼接成的Html,后来在Html中加入一个按钮,点击之后用当前的UIWebView去加载网络上的网页。程序跑起来发现非常耗内存,加载几个网上的网页之后就爆内存警告了,不处理的话很容易被评估拒掉app。后来就改成用系统的safari浏览器来打开网络上的网页,把着耗

zhangkongzhongyun的专栏 7万+

从 PI Start Page 到 ESR、ID、SLD,重新理解 SAP PI 的工具访问体系

摘要 SAP PI工具入口设计反映了系统核心分工逻辑。不同角色通过特定入口访问专属工具:集成顾问使用Enterprise Services Builder设计接口,BASIS管理员通过SAP NetWeaver Administrator监控运行状态,技术顾问在Integration Builder配置路由,系统维护则需进入System Landscape Directory。这种设计体现了PI平台将工作划分为管理、技术配置、设计、业务配置和监控五大领域。尤其值得注意的是技术配置与业务配置的连续性关系,如I

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1876

WebView shouldStartLoadWithRequest 没有被触发是什么鬼?

1、我的项目是RN和H5块混合开发的,web用的是 react写的,路由和跳转是由官方组件 react-route 进行支持,所以我在进行界面跳转的时候用的是browserHistory.push(url),当我替换为window.location.href = url的时候问题解决了 2、解决了这个问题之后,会遇到一个新的问题,就是React解决界面返回的问题,由于WebView的一个界面需要...

孟凡涛 的博客 2530

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

UIWebView网页视图—IOS开发

UIWebView可以让你创建一个网页浏览器,类似safari,而不是在程序中启动safsri哦。是不是觉得很棒呢?废话少说,切入正题。 一、创建UIWebView CGRect bouds = [[UIScreen manScreen]applicationFrame]; UIWebView* webView = [[UIWebView alloc]initWithFrame:bound...

lianxiangbus 212

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

UIWebView的使用

一、创建UIWebView [java] view plaincopyprint? CGRect bouds = [[UIScreen manScreen]applicationFrame];  UIWebView* webView = [[UIWebView alloc]initWithFrame:bounds];   CGRect bouds = [[UISc

周海锋 的专栏 1万+

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

[TwistedFate]滑块UISlider 跑图UIImageView

UISlider初始化及设背景色UISlider *slider = [[UISlider alloc] initWithFrame:CGRectMake(40, 100, 300, 20)]; slider.backgroundColor = [UIColor redColor];设置轨迹颜色[slider setMinimumTrackTintColor:[UIColor greenColor]

Do not just be a pragrammer 709

[TwistedFate]Label自适应高度

Label的自适应高度创建一个labelUILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(50, 100, 300, 100)]; label.numberOfLines = 0; label.font = [UIFont systemFontOfSize:16]; label.backgroundColor = [UIColor

Do not just be a pragrammer 683

[TwistedFate]UISegmentedControl

1

Do not just be a pragrammer 633

[TwistedFate]自定义视图

LTView自定义视图的步骤 创建一个继承自UIView的类 重写新类的初始化方法 把想封装的视图添加封装到 新类里面(初始化到新类中) 为了方便外部进行赋值取值 把添加的视图写成属性(别忘了释放内存) 测试一下 自定义视图的好处提高工作效率 大大提高代码的复用性具体实现自定义Label-TextField视图创建LTView类继承自LTView// 将要创建的控件用属性写在.h文件中 @prop

Do not just be a pragrammer 627

[TwistedFate]初级数据持久化

初级数据持久化沙盒沙盒机制 每一个APP安装到手机上或者模拟器上, 都会自动生成三个文件夹 这三个文件夹叫沙盒 可以理解为这个APP的沙盒 每个APP的文件夹都是相对独立的 只能自己的应用去访问 不可以互相访问 文件夹中 存储的是 代码以外的 所有数据 例如(图片素材 声音 视频 文档等)也就是说 持久化文件(缓存文件)可以存储到 文件夹中 打开沙盒的各个文件夹路径- (void)path{

Do not just be a pragrammer 614

[TwistedFate]触摸事件 晃动事件 target/action

触摸事件的方法创建TouchView类 并在根视图控制器里初始化 类里 添加触摸事件响应方法- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ NSLog(@"开始摸"); // UITouch保存手指的信息 例如触摸的点 // UITouch *touch = [touches anyObjec

Do not just be a pragrammer 601

[TwistedFate]UIView UILabel

MRC下属性的属性MRC retain assign ARC retain相当于strong 一般修饰对象 assign相当于weak 一般修饰基本数据类型window初始化// 打印满屏的bounds self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]autorelea

Do not just be a pragrammer 575

[TwistedFate]导航视图控制器

导航视图控制器UINavigationController导航控制器,是iOS中最常⽤的多视图控制器之⼀,它⽤来管理多个视图控制器。 导航控制器可以认为是管理控制器的控制器,主要管理有层级关系的控制器 UINavigationController通过栈的⽅式管理控制器的切换,控制⼊栈和出栈来展⽰各个视图控制器 UINavigationController的ContentView⾥始终显⽰栈顶控

Do not just be a pragrammer 562

[TwistedFate]KVO监测Model图片加载

KVO监测Model图片加载使用上一篇的ImageDownLoader类 目的:网络请求数据时,由于图片比较大,加载较慢,可以先加载数据,并显示,而图片可以之后分开加载,加载完再显示详细步骤 在加载数据的model类中添加属性,方法及遵守协议 <ImageDownLoadDelegate> // 请求图片类 @property (nonatomic, retain) ImageDownLoade

Do not just be a pragrammer 549

[TwistedFate]UITableView表视图编辑,移动

UITableView编辑数据准备// 初始化数据 - (void)initializeData{ NSArray *array = @[@"0", @"1", @"2", @"3", @"添加"]; NSArray *array2 = @[@"0", @"1", @"2", @"3", @"4", @"添加"]; self.firstArray = [NSMutableAr

Do not just be a pragrammer 541
上一篇: [TwistedFate]多线程编程NSOperation
下一篇: 22 款开源的 iOS 应用菜单 (Menu) 控件
zZZ浮生
博客等级 码龄11年 12粉丝 70原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值