我有一个带有导航控制器和标签栏控制器的ViewController。这个ViewController有2个按钮可以切换滚动视图和地图视图的可见性。最主要的是让这两个按钮始终显示在同一个地方,而不管方向或视图是否可见。iOS MapView进入导航栏,状态栏和标签栏控制器
我遇到的问题是MapView的尺寸不合适。如果我只是从self.view.bounds给它一个框架,它会在导航栏/标签栏下 - 基本占据整个屏幕。这抛出了我的切换按钮的位置。
我注意到我的ScrollView也是一样的(使用背景色和半透明的导航条),但子视图的位置保持在可见区域内(导航栏和标签栏之间)。所以当我添加我的切换按钮时,它们显示在正确的位置。
当我按下切换按钮时,我只是将按钮的父视图重新分配给现在显示的视图(ScrollView或MapView)。这总是在滚动视图上工作,但由于定位,当MapView显示时,它们最终会在导航栏下面。
我已经尝试手动创建MapView的框架,但我得到奇怪的结果。我用这个框架:
CGRect mapFrame = CGRectMake(
0,
(self.navigationController.navigationBar.frame.size.height + [UIApplication sharedApplication].statusBarFrame.size.height),
self.view.frame.size.width,
(
self.view.frame.size.height
- (self.navigationController.navigationBar.frame.size.height + [UIApplication sharedApplication].statusBarFrame.size.height + self.tabBarController.tabBar.frame.size.height)
)
);
我再设置自动调整大小面具
[self.mapView setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin];
但有了这个,如果我在横向模式下进入视图控制器 - 的MapView是关闭屏幕。如果我以纵向模式进入,然后旋转到横向,则顶部边距会关闭,但大约有10个点,因此它仍然位于导航栏的下方(并且在标签栏和地图视图的底部之间有可见边距)。
如何让MapView子视图只显示在可见区域内,就像ScrollView一样?如果地图本身位于导航栏/标签栏
你应该纪念这个作为回答了。 :) 谢谢您的帮助。 – James
谢谢你的解决方案。 – jhondge