亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

解釋iOS 7中自動調整-ScrollViewInset、ExtendedLayout-

解釋iOS 7中自動調整-ScrollViewInset、ExtendedLayout-

森林海 2019-07-19 10:10:27
解釋iOS 7中自動調整-ScrollViewInset、ExtendedLayout-OpaqueBars、EDgesFortendedLayout之間的差異我讀了很多關于iOS 7 UI轉換的文章。我無法得到這三個屬性automaticallyAdjustsScrollViewInsets, extendedLayoutIncludesOpaqueBars, edgesForExtendedLayout??例如,我試圖讓我的視圖控制器從狀態欄下面開始,但我無法實現它
查看完整描述

3 回答

?
BIG陽

TA貢獻1859條經驗 獲得超6個贊

從iOS 7開始,視圖控制器默認使用全屏布局。同時,您可以更好地控制視圖的布局方式,而這些屬性就是這樣完成的:

EDgesfortendedLayout

基本上,使用這個屬性,您可以設置視圖的哪些邊可以擴展到覆蓋整個屏幕。想象一下你推一個UIViewController變成UINavigationController..當該視圖控制器的視圖被放置時,它將從導航欄結束的位置開始,但該屬性將設置視圖的哪些邊(上、左、下、右)可以擴展以填充整個屏幕。

讓我們舉一個例子來看看:

UIViewController *viewController = [[UIViewController alloc] init];viewController.view.backgroundColor = [UIColor redColor];
UINavigationController *mainNavigationController = [[UINavigationController alloc] initWithRootViewController:viewController];

在這里,您沒有設置edgesForExtendedLayout,因此采用默認值(UIRectEdgeAll),因此視圖擴展其布局以填充整個屏幕。

結果是:

如您所見,紅色背景延伸到導航欄和狀態欄后面。

現在,您要將該值設置為UIRectEdgeNone,因此,您要告訴視圖控制器不要將視圖擴展到屏幕上:

UIViewController *viewController = [[UIViewController alloc] init];viewController.view.backgroundColor = [UIColor redColor];
viewController.edgesForExtendedLayout = UIRectEdgeNone;UINavigationController *mainNavigationController = [[UINavigationController alloc]
 initWithRootViewController:viewController];

其結果是:

自動調整ScrollViewInset

視圖為UIScrollView或者類似的,就像UITableView..您希望您的表從導航欄結束的位置開始,因為如果沒有,您將不會看到整個內容,但同時希望您的表在滾動時覆蓋整個屏幕。在這種情況下,設置edgesForExtendedLayout因為您的表將開始滾動導航條結束的位置,并且它不會在其后面滾動,因此對任何操作都不起作用。

下面是這個屬性的方便之處,如果您讓視圖控制器自動調整inset(將此屬性設置為yes,也是默認值),它將嵌入添加到表的頂部,因此表將從導航條結束的位置開始,但滾動將覆蓋整個屏幕。

此時設置為“否”:

和“是”(默認情況下):

在這兩種情況下,表在導航欄后面滾動,但在第二種情況下(是),它將從導航欄下面開始。

擴展LayoutIncludeesOpaqueBars

這個值只是對以前的值的一個補充。默認情況下,此參數設置為否。如果狀態欄是不透明的,則視圖將不會擴展到包含狀態欄,即使您擴展視圖以覆蓋它(edgesForExtendedLayoutUIRectEdgeAll).

如果將值設置為“是”,這將允許視圖再次位于狀態欄下。

如果有什么不清楚的地方,寫一篇評論,我會回答的。

IOS如何知道使用什么UIScrollView?

IOS獲取ViewController視圖中的第一個子視圖,即索引0處的子視圖,如果它是UIScrollView然后將解釋的屬性應用到它。

當然,這意味著UITableViewController默認情況下工作(因為UITableView是第一個視圖)。


查看完整回答
反對 回復 2019-07-19
?
largeQ

TA貢獻2039條經驗 獲得超8個贊

不確定是否使用情節提要,但如果使用,則讓視圖控制器從狀態欄(以及底部欄上方)開始:

在IB中選擇視圖控制器,在“屬性”檢查器中,取消選擇“在頂部條下擴展邊緣”和“在底部條下擴展邊緣”。


查看完整回答
反對 回復 2019-07-19
  • 3 回答
  • 0 關注
  • 521 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號