IOS UIWebView (API+JS交互)、WKWebView


javascriptCore.framework

使用如下代码可以等比缩放webview的网页大小,以便适配手机大小,0.5表示缩小为原网页1/2大小:
- (void)webViewDidFinishLoad:(UIWebView *)webView  
{  
    [webView stringByEvaluatingJavaScriptFromString:@"document.body.style.zoom=0.5"];  
}  
webView上下文
JSContext *context = [self.webview valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];

(1)获取页面title

NSString *title = [webview stringByEvaluatingJavaScriptFromString:@"document.title"];

(2)获取当前的URL

NSString *url = [webview stringByEvaluatingJavaScriptFromString:@"document.location.href"];



    WebView Post 请求 H5

 

NSURL *url = [NSURL URLWithString:self.url];
    NSMutableURLRequest *request = [[NSMutableURLRequest alloc]initWithURL: url];
    [request setHTTPMethod: @"POST"];
    [request setHTTPBody: [self.body dataUsingEncoding: NSUTF8StringEncoding]];
    [self.webView loadRequest: request];


WebView使用

webView = [[UIWebView alloc]initWithFrame:CGRectMake(0, 100, CGRectGetWidth(self.view.frame), 500)];
    webView.delegate = self;
    [self.view addSubview:webView];
    
    
    //设置URL请求
    NSURL *url = [NSURL URLWithString:@"http://www.baidu.com"];
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    
    
    //请求事件
    [webView loadRequest:request];
    
    
    
    //@property (nonatomic) BOOL scalesPageToFit;
    //自动适配屏幕
    webView.scalesPageToFit = YES;

    
    
    //禁止反弹
    [(UIScrollView *)[[webView subviews] objectAtIndex:0] setBounces:NO];
    
    
    
    
    //@property (nonatomic) UIDataDetectorTypes dataDetectorTypes NS_AVAILABLE_IOS(3_0);
    /*
     typedef NS_OPTIONS(NSUInteger, UIDataDetectorTypes) {
        UIDataDetectorTypePhoneNumber   = 1 << 0,          // 默认 电话号码
        UIDataDetectorTypeLink          = 1 << 1,          // URL
        #if __IPHONE_4_0 <= __IPHONE_OS_VERSION_MAX_ALLOWED
        UIDataDetectorTypeAddress       = 1 << 2,          // Email地址
        UIDataDetectorTypeCalendarEvent = 1 << 3,          // 日历 打开 ActionSheet
     
        UIDataDetectorTypeNone          = 0,               // 无超链
        UIDataDetectorTypeAll           = NSUIntegerMax    // All types
     };
     */
    webView.dataDetectorTypes = UIDataDetectorTypeAll;
    
    
    
    
    //@property (nonatomic) BOOL allowsInlineMediaPlayback NS_AVAILABLE_IOS(4_0); // iPhone Safari defaults to NO. iPad Safari defaults to YES
    //这个值决定了用内嵌HTML5播放视频还是用本地的全屏控制。(iPhone 默认关闭,iPad 默认打开)
    
    webView.allowsInlineMediaPlayback = YES;
    
    
    
    
    //@property (nonatomic) BOOL mediaPlaybackRequiresUserAction NS_AVAILABLE_IOS(4_0); // iPhone and iPad Safari both default to YES
    //在iPhone和iPad上默认使YES。这个值决定了HTML5视频可以自动播放还是需要用户去启动播放
    webView.mediaPlaybackRequiresUserAction = NO;
    
    
    
    
    //@property (nonatomic) BOOL mediaPlaybackAllowsAirPlay NS_AVAILABLE_IOS(5_0); // iPhone and iPad Safari both default to YES
    //这个值决定了从这个页面是否可以Air Play(蓝牙)。 在iPhone和iPad上默认使YES。
    webView.mediaPlaybackAllowsAirPlay = YES;
    
    
    
    
    //@property (nonatomic) BOOL suppressesIncrementalRendering NS_AVAILABLE_IOS(6_0); // iPhone and iPad Safari both default to NO
    //是否网页内容下载完毕才开始渲染web视图,默认为NO
    webView.suppressesIncrementalRendering = NO;
    
    
    
    
    //@property (nonatomic) BOOL keyboardDisplayRequiresUserAction NS_AVAILABLE_IOS(6_0); // default is YES
    //是否在web页面响应用户输入弹出键盘,默认为YES
    webView.keyboardDisplayRequiresUserAction  = YES;
    
    
    
    

    //===================以下是io7新特性======================
    
    //@property (nonatomic) UIWebPaginationMode paginationMode NS_AVAILABLE_IOS(7_0);
    //设置此项属性网页会压缩展示,当网页的大小超出view时,以翻页的效果展示
    /**
        typedef NS_ENUM(NSInteger, UIWebPaginationMode) {
            UIWebPaginationModeUnpaginated,//不使用翻页效果
            UIWebPaginationModeLeftToRight,//将网页超出部分分页,从左向右进行翻页
            UIWebPaginationModeTopToBottom,//将网页超出部分分页,从上向下进行翻页
            UIWebPaginationModeBottomToTop,//将网页超出部分分页,从下向上进行翻页
            UIWebPaginationModeRightToLeft//将网页超出部分分页,从右向左进行翻页
    };
    */
    
    webView.paginationMode = UIWebPaginationModeTopToBottom;
    
    
    
    
    
    //@property (nonatomic) UIWebPaginationBreakingMode paginationBreakingMode NS_AVAILABLE_IOS(7_0);
    //webView加载页面具有CSS属性时是使用页的样式还是以列的样式。
    /**
        typedef NS_ENUM(NSInteger, UIWebPaginationBreakingMode) {
            UIWebPaginationBreakingModePage,
            UIWebPaginationBreakingModeColumn
     };
     */
    webView.paginationBreakingMode = UIWebPaginationBreakingModeColumn;
    
    
    
    
    //@property (nonatomic) CGFloat pageLength NS_AVAILABLE_IOS(7_0);
    //分页的长度
    webView.pageLength = 50;

    
    
    //@property (nonatomic) CGFloat gapBetweenPages NS_AVAILABLE_IOS(7_0);
    //页面之间间距
    webView.gapBetweenPages = 1;
    
    
    
    //@property (nonatomic, readonly) NSUInteger pageCount NS_AVAILABLE_IOS(7_0);
    //分页数
    NSUInteger count = webView.pageCount;


取消侧边和底部滚动条

UIWebView * d_intro = [[UIWebView alloc] init];
d_intro.delegate = self;
d_intro.dataDetectorTypes = UIDataDetectorTypeLink;
    //取消右侧,下侧滚动条,去处上下滚动边界的黑色背景  
  d_intro.backgroundColor=[UIColor clearColor];
     for (UIView *_aView in [d_intro subviews])      {
         if ([_aView isKindOfClass:[UIScrollView class]])          {  
           [(UIScrollView *)_aView setShowsVerticalScrollIndicator:NO];             //右侧的滚动条             [(UIScrollView *)_aView setShowsHorizontalScrollIndicator:NO];             //下侧的滚动条                         for (UIView *_inScrollview in _aView.subviews)           
   {  
               if ([_inScrollview isKindOfClass:[UIImageView class]])    
             {             
        _inScrollview.hidden = YES;  //上下滚动出边界时的黑色的图片   
              }        
     }       
  } 
    }        [self.view addSubview:d_intro];



JS调用OC方法

转自:http://www.2cto.com/kf/201503/383795.html

一、以前使用js调用object-c的方法

关于如何使用javascript调用object-c中的函数和方法,我搜索了好久

网上所有的方法,基本都指明了一个方向,那就是在UIWebview中载入的js代码中

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值