我有一個像照片應用程序的應用程序,其中主視圖是UIScrollView
,它佔用了屏幕的全尺寸。此外,與照片應用程序一樣,當用戶點擊屏幕時,會有半透明的導航,狀態和工具欄重新出現/消失。全屏UIScrollView無法正常工作
我有一個問題,將UIViewControllers
主視圖設置爲UIScrollView
並佔用屏幕的全長。問題是,當顯示導航和狀態欄時,UIScrollView
被導航和狀態欄的高度推下(它不會像它所想的那樣放在它們下面)。當用戶點擊屏幕並且導航/狀態欄消失時,它會自行重置以佔據屏幕的整個長度,就像它假設的那樣。
將主視圖設置爲UIView
並在其上附加UIScrollView
即可工作。但是,我想嘗試使這個工作沒有任何解決方法(即調整UIScrollViews contentInset
等),因爲理論上它應該工作。
下面是我執行的代碼:
- (void)loadView
{
self.wantsFullScreenLayout = YES;
UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame: CGRectMake(0,0,320,480)];
scrollView.contentSize = CGSizeMake(320, 480);
scrollView.scrollEnabled = NO;
scrollView.contentOffset = CGPointZero;
scrollView.bounces = NO;
self.view = scrollView;
[scrollView release];
}
- (void) viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
self.navigationController.navigationBar.translucent = YES;
[[UIApplication sharedApplication] setStatusBarStyle: UIStatusBarStyleBlackTranslucent animated: NO];
self.navigationController.toolbarHidden = NO;
self.navigationController.toolbar.barStyle = UIBarStyleBlack;
self.navigationController.toolbar.translucent = YES;
[self startTimer];
}
- (void) viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
self.navigationController.navigationBar.translucent = NO;
[[UIApplication sharedApplication] setStatusBarStyle: UIStatusBarStyleDefault animated: NO];
[self cancelTimer];
}
更新:我注意到它的contentOffset
和contentInset
正在改變,而不是scrollViews
框架。當杆已經消失,UIScrollView
是屏幕的全尺寸(因爲它應該是),則contentOffset
和contentInset
如下:
Content Offset: {0, -20}
Content Inset: {20, 0, 44, 0}
當酒吧是可見的,並且UIScrollView
被按下時, contentOffset
和contentInset
如下:
Content Offset: {0, -64}
Content Inset: {64, 0, 44, 0}
祝福你!我只是把我的頭髮拉出來。 –