iOS中 self.view的高度問題

iOS10 以下版本 self.viewy會(huì)從頂部toolBary開始計(jì)算.

  • 在iOS7中, 蘋果引入了一個(gè)新的屬性, 叫做UIViewController.edgesForExtendedLayout, 他的默認(rèn)值是all, 當(dāng)你的容器是navigationController時(shí), 默認(rèn)的布局將從navigationBar的頂部開始. 這就是為什么所有的UI元素都往上偏移了44pt. 有時(shí)候還會(huì)加上頂部toolBar的高度20, 而且下面的tabbar也縮進(jìn)49.
    解決辦法: 設(shè)置 edgesForExtendedLayout = UIRectEdge.init()
    如果設(shè)置成 edgesForExtendedLayout = UIRectEdge.bottom; 那么就會(huì)self.view.frame是從navigationBar下面開始計(jì)算一直到屏幕底部.
    如果設(shè)置成 edgesForExtendedLayout = UIRectEdge.init(); 那么就會(huì)self.view.frame是從navigationBar下面開始計(jì)算 一直到屏幕tabbar上部.
    如果設(shè)置成 edgesForExtendedLayout = UIRectEdge.top; 那么就會(huì)self.view.frame 是從navigationBar上面計(jì)算, 一直到屏幕tabbar上部.

  • 在iOS11 以下的系統(tǒng), 隱藏導(dǎo)航欄之后, 滑動(dòng)視圖會(huì)向下偏移狀態(tài)欄的高度. 解決辦法:
    項(xiàng)目中用到的tableView 或者 scrollView 在Xib中已經(jīng)設(shè)置過contentInsetAdjustmentBehavior = never. 但是沒有適配低版本的系統(tǒng)設(shè)置. 在iOS11 以下版本中要設(shè)置self.automaticallyAdjustsScrollViewInsets = false; 代碼為:

  if #available(iOS 11.0, *) {
            tableView.contentInsetAdjustmentBehavior = UIScrollView.ContentInsetAdjustmentBehavior.never
        } else {
            automaticallyAdjustsScrollViewInsets = false
        }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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