簡體   English   中英

當我回到它時,UIViewController得到偏移

[英]UIViewController gets offset when I go back to it

我有一個UIViewController ,它有一個UIScrollView作為根視圖定義並添加如下

[self.view addSubview:mainScrollView];
UIScrollView *mainScrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 64, screenWidth, screenHeight)];

我從NavigationController (20狀態欄+ 44導航欄)開始偏移64,直到現在一切正常。 然后我添加另一個ViewController ,當我返回時,mainScrollView在y中偏離導航控制器64點。 為什么會這樣?

之前:

在此輸入圖像描述

后:

在此輸入圖像描述

當您將UITableView添加到已檢查Under Top Bars屬性的UIViewController ,可能會看到相同的情況

在此輸入圖像描述

你可以認為這是一個“黑客”,但嘗試取消選中該框,看看它是否解決了你的問題。

如果是,那么應該設置正確的EdgeInset 如果您確實需要/需要它,那么您可以重新啟用“在頂部條形圖下”。

很可能是由於這些屬性的錯誤組合:

  1. automaticallyAdjustsScrollViewInsets
  2. edgesForExtendedLayout
  3. extendedLayoutIncludesOpaqueBars
  4. 導航欄的半透明度

如果VC的第一個視圖或第一個子視圖是滾動視圖或從中繼承的視圖(例如tableview),則第一個添加插圖。 第二個告訴主視圖它是否應該位於“調整”有用的導航欄或標簽欄下面。
這里有類似的答案iOS 7 UITextView垂直對齊

您的滾動視圖從y = 64開始。 當您在另一個視圖控制器上導航時,它可能是y = 64的原因偏移。 Kinjal

很難弄清楚究竟是什么原因。

我會做的是落實viewWillLayoutSubviews的方法UIViewController ,並闖了進去,讓您的所有指標self.view和你mainScrollView .documentation 這里

通過這些信息,我們可以找到可能存在的問題。

要么嘗試一些東西繞過它或者找到根本原因我也會嘗試將mainScrollView設置為the UIViewController視圖:

- (void)loadView
{
    [super loadView];
    UIScrollView *mainScrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, screenWidth, screenHeight)];
    self.view = mainScrollView;
}

另一種解決方案是在viewWillLayoutSubviews方法中調整mainScrollView的y偏移量:

- (void)viewWillLayoutSubviews
{
    [super viewWillLayoutSubviews];
    self.mainscrollView.frame = self.view.bounds;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM