当前位置: 首页 > news >正文

IOS 设置UIViewController为背景半透明浮层弹窗,查看富文本图片详情

使用场景:UIViewController1 打开 UIViewController2(背景半透明弹窗)

案例:打开富文本网页<img>图片的url查看图片详情

WKWebView  WKNavigationDelegate代理方法设置js代码点击事件 

///注册添加图片标签点击js方法
- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation{///js添加图片点击事件NSString *jsClickImage =@"function registerImageClickAction(){var imgs=document.getElementsByTagName('img');var length=imgs.length;for(var i=0; i < length;i++){img=imgs[i];if(\"ad\" ==img.getAttribute(\"flag\")){var parent = this.parentNode;if(parent.nodeName.toLowerCase() != \"a\")return;}img.onclick=function(){window.location.href='image-preview:'+this.src}}}";[webView evaluateJavaScript:jsClickImage completionHandler:nil];[webView evaluateJavaScript:@"registerImageClickAction()" completionHandler:nil];[webView evaluateJavaScript:@"document.body.scrollHeight" completionHandler:^(id _Nullable result,NSError *_Nullable error) {//获取webView内容高度CGFloat height = [result doubleValue];
//        [webView mas_updateConstraints:^(MASConstraintMaker *make) {
//              make.height.equalTo(@(height));
//        }];webView.frame = CGRectMake(0, 0, self.frame.size.width, height);[webView layoutIfNeeded];[webView setNeedsLayout];if (self.contentHeightCallback != nil) {self.contentHeightCallback(CGSizeMake(self.frame.size.width, height));}}];}///拦截点击图片
- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler{NSString *requestString = navigationAction.request.URL.absoluteString;NSString *imgKey = @"image-preview";if([requestString hasPrefix: imgKey]){NSString *url = [requestString substringFromIndex:imgKey.length+1];//查看图片详情[self showPicDetail:url];decisionHandler(WKNavigationActionPolicyCancel);return;}decisionHandler(WKNavigationActionPolicyAllow);
}

showPicDetail:()  方法打开浮窗:

-(void) showPicDetail:(NSString *)imgUrl{ShowBigPicDetailViewController *vc = [[ShowBigPicDetailViewController alloc] init];vc.imageUrl = imageUrl;//设置全屏显示   关键语句,必须有vc.modalPresentationStyle = UIModalPresentationOverCurrentContext;[self presentViewController:vc animated:YES completion:nil];
}

设置UIViewController2 背景半透明

- (void)viewDidLoad {[super viewDidLoad];//设置半透明背景[self.view setBackgroundColor:[UIColor colorWithRed:0 green:0 blue:0 alpha:0.5f]];...
}

关闭浮窗弹窗:

[self dismissViewControllerAnimated:YES completion:nil];

http://www.lryc.cn/news/312376.html

相关文章:

  • 网络层介绍
  • springboot/ssm酒店客房管理系统Java在线酒店预约预定平台web
  • 分布式测试插件 pytest-xdist 使用详解
  • 【S32K3 MCAL配置】-1.1-GPIO配置及其应用-点亮LED灯(基于MCAL)
  • 【软件工程】软件工程定义、软件危机以及软件生命周期
  • 24计算机考研深大经验分享(计算机专业考研综合安排)
  • 【知识整理】MySQL数据库开发设计规范
  • Vue自定义组件实现v-model
  • 【Linux】Linux网络故障排查与解决指南
  • 跟着cherno手搓游戏引擎【27】升级2DRenderer(添加旋转)
  • 中医舌苔笔记
  • Facebook的社交未来:元宇宙时代的数字共融
  • 2024护网面试题精选(一)
  • 如何制作一个简单html网页
  • React富文本编辑器开发(七)接口与辅助函数
  • 【conda】conda卸载并重新安装指定版本软件package
  • 项目设计方案规范参考
  • LVS----DR模式
  • 操作系统(笔记)(一)
  • Redis线程模型解析
  • ros2 launch如何控制node的启动顺序
  • Android13 framework层添加关机接口
  • GDB调试入门笔记
  • JavaScript的`call`方法:实现函数间的调用!
  • qt5-入门-使用拖动方式创建Dialog
  • 【Redis】RedisTemplate和StringRedisTemplate的区别
  • 面试经典150题(101-104)
  • Java实现读取转码写入ES构建检索PDF等文档全栈流程
  • 主流开发环境和开发语言介绍
  • C++ 使用 nlohmann::json存储json文件