你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS編程技術 >> 解決UIScrollview無故偏移和導航條遮擋view的問題

解決UIScrollview無故偏移和導航條遮擋view的問題

編輯:IOS編程技術

1.設置自動調整scrollview的 inset

self.automaticallyAdjustsScrollViewInsets = NO;

簡單點說就是automaticallyAdjustsScrollViewInsets根據按所在界面的status bar,navigationbar,與tabbar的高度,自動調整scrollview的 inset,設置為no,不讓viewController調整。

注:自己代碼的問題在於自定義了一個navigationbar,因而系統自己判定並適配,設置 self.automaticallyAdjustsScrollViewInsets = NO 才達到了效果。

2.ios7.0以後狀態欄和導航條遮住view

方案一:

//這句話的意思就是讓導航欄不透明且占空間位置,所以我們的坐標就會從導航欄下面開始算起。
self.navigationController.navigationBar.translucent = NO;

方案二:

    
//edgesForExtendedLayout是ios7的新屬性,所以在ios7以下設備會出現奔潰現象,解決辦法就是先判斷在使用,可以通過判斷系統版本,也可以通過判斷方法是否可使用
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0) { self.edgesForExtendedLayout = UIRectEdgeNone; self.extendedLayoutIncludesOpaqueBars = NO; self.modalPresentationCapturesStatusBarAppearance = NO; }

注:

1.edgesForExtendedLayout

 

edgesForExtendedLayout默認的值是UIRectEdgeAll就是全部布局的意思,改成UIRectEdgeNone就會和ios7之前的系統版本一樣的效果

 

2.extendedLayoutIncludesOpaqueBars

如 果狀態欄是不透明的,那麼頁面的布局默認是不會包含狀態欄的,除非將這個屬性設置成為YES。所以如果你的頁面擴展到Navigation Bar (edgesForExtendedLayout=UIRectEdgeAll),要是這個屬性設置成NO (default), 如果狀態欄是不透明的話,頁面是不會擴展到狀態欄的。

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved