shi*_*tix 5 uiviewcontroller mapkit ios
我有一个带导航控制器和标签栏控制器的ViewController.此ViewController有2个按钮,用于切换滚动视图和地图视图的可见性.最重要的是让这两个按钮始终显示在同一个地方,无论方向或恰好可见的视图.
我遇到的问题是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)
)
);
Run Code Online (Sandbox Code Playgroud)
然后我设置自动调整大小的面具
[self.mapView setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin];
Run Code Online (Sandbox Code Playgroud)
但有了这个,如果我以横向模式进入视图控制器 - MapView不在屏幕上.如果我进入纵向模式然后旋转到横向,则上边距关闭但大约10个点,因此它仍然位于导航栏下方(并且在标签栏和地图视图底部之间有可见边距).
如何使MapView子视图仅显示在可见区域内,就像ScrollView一样?如果地图本身位于导航栏/标签栏下方,我不介意
shi*_*tix 13
呃,我几分钟前就找到了答案.我不知道为什么这是iOS 7上的默认行为,但唉,就是这样.
解决方案是将此添加到ViewController上的viewDidLoad
[self setEdgesForExtendedLayout:UIRectEdgeNone];
[self setAutomaticallyAdjustsScrollViewInsets:NO];
Run Code Online (Sandbox Code Playgroud)
非常感谢这里的帖子
| 归档时间: |
|
| 查看次数: |
4270 次 |
| 最近记录: |