[英]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
。 如果您確實需要/需要它,那么您可以重新啟用“在頂部條形圖下”。
很可能是由於這些屬性的錯誤組合:
如果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.