iOS scrollview截長圖 解決iOS 11 tableView截長圖不全 contentSize獲取不準(zhǔn)

錯誤展示.png

正常展示.png

問題

之前APP內(nèi)截取tableView長圖在iOS 11以下的機型可以正常運行,但是iOS 11系統(tǒng)卻只能截圖當(dāng)前屏幕范圍內(nèi)的圖片,如下圖所示

原因

IOS11以后,Self-Sizing默認(rèn)開啟,包括Headers, footers。如果項目中沒使用estimatedRowHeight屬性,在IOS11下會有奇奇怪怪的現(xiàn)象,因為IOS11之前,estimatedRowHeight默認(rèn)為0,Self-Sizing自動打開后,contentSize和contentOffset都可能發(fā)生改變??梢酝ㄟ^設(shè)置tableView的estimatedRowHeight、estimatedSectionHeaderHeight、estimatedSectionFooterHeight屬性為0來關(guān)閉Self-Sizing。

解決方法

在對應(yīng)的tableView處設(shè)置如下屬性,關(guān)閉Self-Sizing。

_tableView.estimatedRowHeight = 0; 
_tableView.estimatedSectionHeaderHeight = 0; 
_tableView.estimatedSectionFooterHeight = 0;

很多童鞋反饋目前iOS11之后還有問題,放出截圖方法

- (UIImage *)captureScrollView:(UIScrollView *)scrollView{
    CGRect  savedFrame = scrollView.frame;
    CGSize size = CGSizeMake(scrollView.contentSize.width, scrollView.contentSize.height);
    if(&UIGraphicsBeginImageContextWithOptions != NULL){
        //第一個參數(shù)表示區(qū)域大小。第二個參數(shù)表示透明開關(guān),如果圖形完全不用透明,設(shè)置為YES以優(yōu)化位圖的存儲.第三個參數(shù)就是屏幕密度了
        UIGraphicsBeginImageContextWithOptions(size, NO, 0.0);
    }else{
        UIGraphicsBeginImageContext(size);
    }
    scrollView.contentOffset = CGPointZero;
    scrollView.frame = CGRectMake(0, 0, scrollView.contentSize.width, scrollView.contentSize.height);
    
    //iOS7 提供的截屏新方法,可以不在主線程做
    [scrollView drawViewHierarchyInRect:CGRectMake(0, 0, scrollView.frame.size.width, scrollView.frame.size.height) afterScreenUpdates:YES];
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    
    scrollView.frame = savedFrame;
    if(image != nil){
        return image;
    }
    return nil;
}

xib出現(xiàn)問題的請把tableView換成手寫,試了多種方法,xib截取長圖展示不全

--- 2019.11.16

有幫助請點贊

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 最近 升級Xcode 9 + iOS 11后,發(fā)現(xiàn)原本沒問題的tableView出現(xiàn)了好多異常。 一、頭部刷新UI...
    我的咯嗨閱讀 11,139評論 10 19
  • 本文為作者原創(chuàng),未經(jīng)作者允許不得轉(zhuǎn)載。該文同時發(fā)表在騰訊bugly公眾號:https://mp.weixin.qq...
    sonialiu閱讀 101,902評論 74 283
  • iOS 11 為整個生態(tài)系統(tǒng)的 UI 元素帶來了一種更加大膽、動態(tài)的新風(fēng)格。 本文介紹iOS11中在UI方面做了哪...
    阿凡提說AI閱讀 640評論 0 1
  • 前言 蘋果WWDC開發(fā)者大會上,終于發(fā)布了大家期待已久的iOS 11,有些新特性功能確實出人意料。不過大的方面蘋果...
    Mr_Say_Yes閱讀 3,468評論 6 15
  • 東頭跛腳的杜叔,仍在修鞋,應(yīng)該是初中開始,他就在巷口修鞋,巷口外便是繁華的步行街,離學(xué)校也就幾個街口,我經(jīng)常在換季...
    西詩人生閱讀 490評論 0 1

友情鏈接更多精彩內(nèi)容