我有一个像照片应用程序的应用程序,其中主视图是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}
祝福你!我只是把我的头发拉出来。 –