我有包含scrollView的视图。当视图显示时,图像以全屏显示(320x480),隐藏状态和导航栏。当我点击屏幕时 - 屏幕上会出现状态和导航栏。但是这件事将UIScrollView转移到导航栏下方。我希望状态和导航栏显示在我的滚动视图上。
喜欢它发生在照片应用中。在点击图像时,状态和导航栏会显示在scrollView上。
以下是我如何定位视图
//What I have done in viewDidLoad
[[UIApplication sharedApplication] setStatusBarHidden:YES animated:NO];
self.wantsFullScreenLayout = YES;
scrollView = [[UIScrollView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];
self.view = scrollView;
以下是我在检测单击时所做的工作
- (void)tapDetectingImageView:(TapDetectingImageView *)view gotSingleTapAtPoint:(CGPoint)tapPoint {
// single tap hide/unhide the status and nav bar
NSLog(@"got a single tap");
if (self.navigationController.navigationBarHidden == NO)
{
[self.navigationController setNavigationBarHidden:YES animated:NO];
[[UIApplication sharedApplication] setStatusBarHidden:YES animated:YES];
}
else
{
[[UIApplication sharedApplication] setStatusBarHidden:NO animated:YES];
[self.navigationController setNavigationBarHidden:NO animated:NO];
}
}
只是你们的指针 - 如果我使用
[self.view addSubview:scrollView];
我没有看到这个问题。但是这会弄乱我的横向代码。
任何可以解释我可能做错的事情的人都会很有帮助!
答案 0 :(得分:3)
切换导航工具栏时,UIScrollView
内部似乎有一些特殊处理。正如您在问题末尾指出的那样,如果将滚动视图放在包含UIView
的内部,则不会发生此重新定位问题。
要解决格局问题,请确保在容器视图和滚动视图上都设置autoresizingMask
。我没有在项目中为横向模式添加任何其他处理。
答案 1 :(得分:1)
我自己找到了解决方案。 在我的点击检测代码的其他fn我在最后添加以下行。
scrollView.contentOffset = CGPointMake(parentScrollView.contentOffset.x,0);
不确定这是否是正确的做法。但是,如果有人能提出更好的方法 - 非常欢迎!