iOS 由ScrollView中的子視圖View向下偏移64個(gè)像素的思考

問題:

UINavigationController設(shè)置為self.window的根視圖,然后將UIVIewController設(shè)置為UINavigtionController的根控制器忱屑。在UIViewController中加入一個(gè)ScrollView遇八,再ScrollView中加入一個(gè)view惹挟。運(yùn)行發(fā)現(xiàn).:ScrollView顯示正常滔岳,而 ScrollView中的子視圖VIew向下偏移了64個(gè)像素身隐。

截圖.png

解決方法:

設(shè)置UIVIewController的automaticallyAdjustsScrollViewInsets屬性

  self.automaticallyAdjustsScrollViewInsets = NO;

在解決這個(gè)問題的過程中邀泉,嘗試了好幾個(gè)屬性的設(shè)置,在此一并記錄一下作用:

@property(nonatomic,assign) BOOL automaticallyAdjustsScrollViewInsets NS_AVAILABLE_IOS(7_0); // Defaults to YES
@property(nonatomic,assign) UIRectEdge edgesForExtendedLayout NS_AVAILABLE_IOS(7_0); // Defaults to UIRectEdgeAll
@property(nonatomic,assign) BOOL extendedLayoutIncludesOpaqueBars NS_AVAILABLE_IOS(7_0); // Defaults to NO, but bars are translucent by default on 7_0.  

1胚迫、首先我們來說說:automaticallyAdjustsScrollViewInsets這個(gè)屬性喷户,默認(rèn)值為YES.

這個(gè)屬性的官方解釋:

A Boolean value that indicates whether the view controller should automatically adjust its scroll view insets

Default value is YES, which allows the view controller to adjust its scroll view insets in response to the screen areas consumed by the status bar, navigation bar, and toolbar or tab bar. Set to NO if you want to manage scroll view inset adjustments yourself, such as when there is more than one scroll view in the view hierarchy.

如果是UIScroolview以及繼承自它的控件,默認(rèn)值YES是設(shè)置它的Insets為自適應(yīng)访锻。這里自適應(yīng)其實(shí)就是空出導(dǎo)航欄的位置褪尝。

PS:這個(gè)屬性不僅可以解決類似于開篇的問題。也對直接添加到viewcontroller上的控件起作用期犬。

當(dāng) automaticallyAdjustsScrollViewInsets 為 NO 時(shí)河哑,tableview 是從屏幕的最上邊開始,也就是被導(dǎo)航欄和狀態(tài)欄覆蓋龟虎。如下圖:

貼邊.png

當(dāng) automaticallyAdjustsScrollViewInsets 為 YES 時(shí)璃谨,也是默認(rèn)行為,表現(xiàn)就比較正常了鲤妥。

不貼邊.png

2睬罗、edgesForExtendedLayout

它是一個(gè)類型為UIExtendedEdge的屬性,指定邊緣要延伸的方向旭斥,edgesForExtendedLayout的默認(rèn)值很自然地是UIRectEdgeAll,四周邊緣均延伸古涧,就是說垂券,如果視圖中有navigationBar,下有tabBar羡滑,那么視圖仍會延伸覆蓋到四周的區(qū)域菇爪。

PS:這個(gè)屬性只對直接添加到viewcontroller上的控件都起作用,但不適用于開篇那樣的問題柒昏。

UIRectEdgeAll.png

edgesForExtendedLayout設(shè)置成UIRectEdgeNone截圖如下:

UIRectEdgeNone.png

導(dǎo)航欄就變成灰色的了凳宙,此時(shí)只需設(shè)置一下

self.navigationController.navigationBar.translucent = NO;

顯示就完全正常了。edgesForExtendedLayout 為UIRectEdgeNone時(shí)职祷,效果跟automaticallyAdjustsScrollViewInsets 為 YES 時(shí)一樣氏涩。

3届囚、extendedLayoutIncludesOpaqueBars

英文解釋:

So, if you extend your view to cover the navigation bar (edgesForExtendedLayout toUIRectEdgeAll) and the parameter is NO (default) it wont cover the status bar if it's opaque.

If something is not clear, write a comment and I'll answer to it.

  • How iOS knows what UIScrollView to use? *iOS grabs the first subview in your viewcontroller's view, so the one at index 0, and if it's a subclass ofUIScrollView then applies the explained properties to it.

Of course, this means that UITableViewController works by default (since theUITableView is the first view).

默認(rèn)值為NO,這個(gè)屬性在狀態(tài)欄不透明的情況下才生效是尖。如果狀態(tài)欄是不透明的意系,那么頁面的布局默認(rèn)是不會包含狀態(tài)欄的,除非將這個(gè)屬性設(shè)置成為YES饺汹。

但是我怎么設(shè)置效果都不明顯蛔添,有待進(jìn)一步研究。

Behind every beautiful thing, there's some kind of pain.####

美麗背后兜辞,必有某種努力迎瞧。####

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市逸吵,隨后出現(xiàn)的幾起案子凶硅,更是在濱河造成了極大的恐慌,老刑警劉巖胁塞,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件咏尝,死亡現(xiàn)場離奇詭異,居然都是意外死亡啸罢,警方通過查閱死者的電腦和手機(jī)编检,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來扰才,“玉大人允懂,你說我怎么就攤上這事●孟唬” “怎么了蕾总?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長琅捏。 經(jīng)常有香客問我生百,道長,這世上最難降的妖魔是什么柄延? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任蚀浆,我火速辦了婚禮,結(jié)果婚禮上搜吧,老公的妹妹穿的比我還像新娘市俊。我一直安慰自己,他們只是感情好滤奈,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布摆昧。 她就那樣靜靜地躺著,像睡著了一般蜒程。 火紅的嫁衣襯著肌膚如雪绅你。 梳的紋絲不亂的頭發(fā)上伺帘,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天,我揣著相機(jī)與錄音勇吊,去河邊找鬼曼追。 笑死,一個(gè)胖子當(dāng)著我的面吹牛汉规,可吹牛的內(nèi)容都是我干的礼殊。 我是一名探鬼主播,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼针史,長吁一口氣:“原來是場噩夢啊……” “哼晶伦!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起啄枕,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤婚陪,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后频祝,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體泌参,經(jīng)...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年常空,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了沽一。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,599評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡漓糙,死狀恐怖铣缠,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情昆禽,我是刑警寧澤蝗蛙,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站醉鳖,受9級特大地震影響捡硅,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜盗棵,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一病曾、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧漾根,春花似錦、人聲如沸鲫竞。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽从绘。三九已至寄疏,卻和暖如春是牢,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背陕截。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工驳棱, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人农曲。 一個(gè)月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓社搅,卻偏偏與公主長得像,于是被迫代替她去往敵國和親乳规。 傳聞我的和親對象是個(gè)殘疾皇子形葬,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評論 2 348

推薦閱讀更多精彩內(nèi)容