iOS WKWebView 圖片自適應(yīng)并且 禁止頁面縮放

1.WKWebView 圖片自適應(yīng)

    NSString *js=@"var script = document.createElement('script');"

    "script.type = 'text/javascript';"

    "script.text = \"function ResizeImages() { "

    "var myimg,oldwidth;"

    "var maxwidth = %f;"

    "for(i=0;i"

    "myimg = document.images[i];"

    "if(myimg.width > maxwidth){"

    "oldwidth = myimg.width;"

    "myimg.width = %f;"

    "}"

    "}"

    "}\";"

    "document.getElementsByTagName('head')[0].appendChild(script);";

    js = [NSString stringWithFormat:js,[UIScreen mainScreen].bounds.size.width,[UIScreen mainScreen].bounds.size.width-15];
    js = [NSString stringWithFormat:@"%@%@",js,@""];

    WKUserScript *script = [[WKUserScript alloc] initWithSource:js injectionTime:WKUserScriptInjectionTimeAtDocumentEnd forMainFrameOnly:NO];

2 .禁止頁面縮放

1.網(wǎng)上查了下資料很多都是通過js user-scalable=no 來實(shí)現(xiàn)的 這樣也可以不過圖片大小在個(gè)別網(wǎng)頁就不自適應(yīng)了,也不知道 怎么與上面的圖片自適應(yīng)代碼組合成一段js 于是就放棄了冻河。愁茁、

  NSString *injectionJSString = @"var script = document.createElement('meta');"
                                     "script.name = 'viewport';"
                                     "script.content=\"width=device-width, user-scalable=no\";"
                                     "document.getElementsByTagName('head')[0].appendChild(script);";
  1. 再次嘗試使用 .wkWebView.scrollView代理方法來關(guān)閉縮放雏门,結(jié)果成關(guān)閉縮放了谴咸,但是圖片又不自適應(yīng)了净刮,靈機(jī)一動(dòng)直接把交互性給關(guān)了了谓晌,然后就好了具温。蚕涤。。就只設(shè)置了 1的圖片自適應(yīng)铣猩。另外吧wkWebView的交互給關(guān)閉了揖铜。
    self.wkWebView.userInteractionEnabled = NO;

全部代碼


- (void)configWKWebView{
//    NSString *js = @" $('meta[name=description]').remove(); $('head').append( '' );";

    NSString *js=@"var script = document.createElement('script');"

    "script.type = 'text/javascript';"

    "script.text = \"function ResizeImages() { "

    "var myimg,oldwidth;"

    "var maxwidth = %f;"

    "for(i=0;i"

    "myimg = document.images[i];"

    "if(myimg.width > maxwidth){"

    "oldwidth = myimg.width;"

    "myimg.width = %f;"

    "}"

    "}"

    "}\";"

    "document.getElementsByTagName('head')[0].appendChild(script);";

    js = [NSString stringWithFormat:js,[UIScreen mainScreen].bounds.size.width,[UIScreen mainScreen].bounds.size.width-15];
    js = [NSString stringWithFormat:@"%@%@",js,@""];

    WKUserScript *script = [[WKUserScript alloc] initWithSource:js injectionTime:WKUserScriptInjectionTimeAtDocumentEnd forMainFrameOnly:NO];
    
    NSString *injectionJSString = @"var script = document.createElement('meta');"
                                       "script.name = 'viewport';"
                                       "script.content=\"width=device-width, user-scalable=no\";"
                                       "document.getElementsByTagName('head')[0].appendChild(script);";
    WKUserScript *injectionJSStringScript = [[WKUserScript alloc] initWithSource:injectionJSString injectionTime:WKUserScriptInjectionTimeAtDocumentEnd forMainFrameOnly:NO];

    WKUserContentController *userController = [WKUserContentController new];
    NSMutableString *javascript = [NSMutableString string]; [javascript appendString:@"document.documentElement.style.webkitTouchCallout='none';"];//禁止長按
    [javascript appendString:@"document.documentElement.style.webkitUserSelect='none';"];//禁止選擇
    
    WKUserScript *noneSelectScript = [[WKUserScript alloc] initWithSource:javascript injectionTime:WKUserScriptInjectionTimeAtDocumentEnd forMainFrameOnly:YES];
    
    
    WKWebViewConfiguration *config =[[WKWebViewConfiguration alloc]init];
    config.preferences = [WKPreferences new];
    
    config.preferences.minimumFontSize = 10;
    
    config.preferences.javaScriptEnabled = YES;
    
    config.preferences.javaScriptCanOpenWindowsAutomatically = YES;
    [userController addUserScript:script];
    [userController addUserScript:noneSelectScript];
    [userController addUserScript:injectionJSStringScript];
    config.userContentController = userController;
    
    self.wkWebView = [[WKWebView alloc]initWithFrame:CGRectZero configuration:config];
    self.wkWebView.scrollView.scrollEnabled = NO;
    self.wkWebView.scrollView.bounces = NO;
    self.wkWebView.userInteractionEnabled = NO;
//    self.wkWebView.navigationDelegate = self;
//    self.wkWebView.scrollView.delegate = self;
    //監(jiān)聽wekwebview 的高度來技術(shù) tableview Cell 的高度
    [self.wkWebView.scrollView addObserver:self forKeyPath:@"contentSize" options:NSKeyValueObservingOptionNew context:nil];
  
}

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey,id> *)change context:(void *)context {
    /**  防止?jié)L動(dòng)一直刷新,出現(xiàn)閃屏  */
    if ([keyPath isEqualToString:@"contentSize"]&&self.wkWebView.scrollView == object) {
//        NSLog(@"----%f",self.wkWebViewHeight);
        
        if (self.wkWebViewHeight < self.wkWebView.scrollView.contentSize.height &&self.isMoreWebView) {
            //如果點(diǎn)擊的展開就一直刷新 达皿,指導(dǎo)拿到最終高度
            self.wkWebViewHeight=  self.wkWebView.scrollView.contentSize.height;
            self.cellGoodsDetailsHeight =self.wkWebViewHeight;
            dispatch_async(dispatch_get_main_queue(), ^{
                // UI更新
                NSLog(@"-----刷新tableview---%f",self.wkWebViewHeight);
                [self.myTableView reloadSections:[NSIndexSet indexSetWithIndex:1] withRowAnimation:UITableViewRowAnimationNone];
            });
            
        }
        //記錄wkWebview 內(nèi)容的高度 點(diǎn)擊展開的時(shí)候  直接刷新
        self.wkWebViewHeight=  self.wkWebView.scrollView.contentSize.height;

    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末天吓,一起剝皮案震驚了整個(gè)濱河市贿肩,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌龄寞,老刑警劉巖汰规,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異物邑,居然都是意外死亡溜哮,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門拂封,熙熙樓的掌柜王于貴愁眉苦臉地迎上來茬射,“玉大人,你說我怎么就攤上這事冒签。” “怎么了钟病?”我有些...
    開封第一講書人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵萧恕,是天一觀的道長。 經(jīng)常有香客問我肠阱,道長票唆,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任屹徘,我火速辦了婚禮走趋,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘噪伊。我一直安慰自己簿煌,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開白布鉴吹。 她就那樣靜靜地躺著姨伟,像睡著了一般。 火紅的嫁衣襯著肌膚如雪豆励。 梳的紋絲不亂的頭發(fā)上夺荒,一...
    開封第一講書人閱讀 51,125評(píng)論 1 297
  • 那天,我揣著相機(jī)與錄音良蒸,去河邊找鬼技扼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛嫩痰,可吹牛的內(nèi)容都是我干的剿吻。 我是一名探鬼主播,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼始赎,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼和橙!你這毒婦竟也來了仔燕?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤魔招,失蹤者是張志新(化名)和其女友劉穎晰搀,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體办斑,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡外恕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了乡翅。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鳞疲。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖蠕蚜,靈堂內(nèi)的尸體忽然破棺而出尚洽,到底是詐尸還是另有隱情,我是刑警寧澤靶累,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布腺毫,位于F島的核電站,受9級(jí)特大地震影響挣柬,放射性物質(zhì)發(fā)生泄漏潮酒。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一邪蛔、第九天 我趴在偏房一處隱蔽的房頂上張望急黎。 院中可真熱鬧,春花似錦侧到、人聲如沸勃教。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽荣回。三九已至,卻和暖如春戈咳,著一層夾襖步出監(jiān)牢的瞬間心软,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來泰國打工著蛙, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留删铃,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓踏堡,卻偏偏與公主長得像猎唁,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子顷蟆,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353