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


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

    案例:打开富文本网页图片的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. [webView evaluateJavaScript:jsClickImage completionHandler:nil];
    6. [webView evaluateJavaScript:@"registerImageClickAction()" completionHandler:nil];
    7. [webView evaluateJavaScript:@"document.body.scrollHeight" completionHandler:^(id _Nullable result,NSError *_Nullable error) {
    8. //获取webView内容高度
    9. CGFloat height = [result doubleValue];
    10. // [webView mas_updateConstraints:^(MASConstraintMaker *make) {
    11. // make.height.equalTo(@(height));
    12. // }];
    13. webView.frame = CGRectMake(0, 0, self.frame.size.width, height);
    14. [webView layoutIfNeeded];
    15. [webView setNeedsLayout];
    16. if (self.contentHeightCallback != nil) {
    17. self.contentHeightCallback(CGSizeMake(self.frame.size.width, height));
    18. }
    19. }];
    20. }
    21. ///拦截点击图片
    22. - (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler{
    23. NSString *requestString = navigationAction.request.URL.absoluteString;
    24. NSString *imgKey = @"image-preview";
    25. if([requestString hasPrefix: imgKey]){
    26. NSString *url = [requestString substringFromIndex:imgKey.length+1];
    27. //查看图片详情
    28. [self showPicDetail:url];
    29. decisionHandler(WKNavigationActionPolicyCancel);
    30. return;
    31. }
    32. decisionHandler(WKNavigationActionPolicyAllow);
    33. }

    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. }

    关闭浮窗弹窗:

    [self dismissViewControllerAnimated:YES completion:nil];

  • 相关阅读:
    水文科技新仪器——地埋式积水探测器
    WinMerge-代码比较工具
    element ui框架(第一个element ui程序)
    学习笔记——路由网络基础——浮动静态路由(路由备份和冗余)
    C++的命名空间、缺省参数、函数重载 及引用
    vue-饼形图-详细
    关于iview select 绑定两个值的方法
    opencv: 解决保存视频失败的问题
    11.6 leetcode打卡(单调栈)
    LeetCode --- 1252. Cells with Odd Values in a Matrix 解题报告
  • 原文地址:https://blog.csdn.net/qq_32540053/article/details/136350364