IOS 设置UIViewController为配景半透明浮层弹窗,检察富文本图片详情 ...

惊落一身雪  金牌会员 | 2024-9-25 05:07:06 | 来自手机 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 746|帖子 746|积分 2238

使用场景:UIViewController1 打开 UIViewController2(配景半透明弹窗)
案例:打开富文本网页<img>图片的url检察图片详情
WKWebView  WKNavigationDelegate代理方法设置js代码点击事件 
  1. ///注册添加图片标签点击js方法
  2. - (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation{
  3.     ///js添加图片点击事件
  4.     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}}}";
  5.    
  6.     [webView evaluateJavaScript:jsClickImage completionHandler:nil];
  7.     [webView evaluateJavaScript:@"registerImageClickAction()" completionHandler:nil];
  8.    
  9.     [webView evaluateJavaScript:@"document.body.scrollHeight" completionHandler:^(id _Nullable result,NSError *_Nullable error) {
  10.         //获取webView内容高度
  11.         CGFloat height = [result doubleValue];
  12. //        [webView mas_updateConstraints:^(MASConstraintMaker *make) {
  13. //              make.height.equalTo(@(height));
  14. //        }];
  15.         webView.frame = CGRectMake(0, 0, self.frame.size.width, height);
  16.         [webView layoutIfNeeded];
  17.         [webView setNeedsLayout];
  18.         if (self.contentHeightCallback != nil) {
  19.             self.contentHeightCallback(CGSizeMake(self.frame.size.width, height));
  20.         }
  21.     }];
  22.    
  23. }
  24. ///拦截点击图片
  25. - (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler{
  26.     NSString *requestString = navigationAction.request.URL.absoluteString;
  27.     NSString *imgKey = @"image-preview";
  28.     if([requestString hasPrefix: imgKey]){
  29.         NSString *url = [requestString substringFromIndex:imgKey.length+1];
  30.         //查看图片详情
  31.         [self showPicDetail:url];
  32.         decisionHandler(WKNavigationActionPolicyCancel);
  33.         return;
  34.     }
  35.     decisionHandler(WKNavigationActionPolicyAllow);
  36. }
复制代码
showPicDetail)  方法打开浮窗:
  1. -(void) showPicDetail:(NSString *)imgUrl{
  2.     ShowBigPicDetailViewController *vc = [[ShowBigPicDetailViewController alloc] init];
  3.     vc.imageUrl = imageUrl;
  4.     //设置全屏显示   关键语句,必须有
  5.     vc.modalPresentationStyle = UIModalPresentationOverCurrentContext;
  6.     [self presentViewController:vc animated:YES completion:nil];
  7. }
复制代码
设置UIViewController2 配景半透明
  1. - (void)viewDidLoad {
  2.     [super viewDidLoad];
  3.     //设置半透明背景
  4.     [self.view setBackgroundColor:[UIColor colorWithRed:0 green:0 blue:0 alpha:0.5f]];
  5.     ...
  6. }
复制代码
关闭浮窗弹窗:
  1. [self dismissViewControllerAnimated:YES completion:nil];
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

惊落一身雪

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表