0

我目前正在将 SWRevealViewController 与 Storyboards 一起使用,并且我看到了直到最近才看到的行为。

最初,在我的一个前视图控制器中,我使用的是 UITableViewController,它运行良好。但是,我需要将其换掉并用带有 MKMapView 和 UITableView 的 UIViewController 替换它。我使用编辑器 > 嵌入 > 导航控制器将新视图控制器嵌入到导航控制器中,就像我之前使用 UITableViewController 所做的那样。

现在我发现当第二次转换到新的前端控制器时,内容被下推。

我在 ViewWillAppear 方法中添加了一些日志,并看到以下内容(经过编辑以筛选出日志噪音......):

首次亮相

self.view - UIView: frame = (0 0; 320 568)
self.mapView - MKMapView: frame = (0 65; 320 128)
self.tableView - UITableView: frame = (0 193; 320 375)

第二次出现

self.view - UIView: frame = (0 64; 320 504)
self.mapView - MKMapView: frame = (0 65; 320 128)
self.tableView - UITableView: frame = (0 193; 320 375)

所以看起来子控件的 X 和 Y 坐标很好 - 它们在两种外观上都是相同的。但是,视图控制器的self.view第二次被推下。

关于为什么会发生这种情况以及我能做些什么来解决它的任何想法?在 viewWillAppear 中将视图控制器的视图明显设置为 0,0 对我不起作用。

提前致谢。

更新 嗯......显然问题是真的:“为什么视图的原点第一次是 0,0?”

当我登录在 SWRevealViewController 的前视图中显示的其他视图控制器时,它们通常会在 0,64 处报告它们的起源。然而,第一次加载初始视图控制器并显示它是 0,0 ......所以现在我想知道这是怎么回事。

4

2 回答 2

1

在这个确切的问题上花费了几个小时后,我找到了解决方案。

在您的初始导航控制器中,您必须将导航栏设置为半透明。您可以通过选中“半透明”复选框在情节提要中执行此操作,如图所示。

检查

如果需要,您仍然可以为导航栏应用颜色(条形色调)。

于 2014-06-27T09:36:03.643 回答
0

好的......好吧......我找到了解决方案。感觉很笨拙,但有效。

我删除了视图控制器中的根视图并将其替换为 UIScrollView,然后将所有组成控件嵌入到滚动视图中。

所以这告诉我,在视图控制器链中的某个地方,“自动调整滚动视图插入”可能已经在某个地方挡住了路?或者也许是一些自动布局的怪癖?

如果有人有想法,仍然对想法持开放态度,因为 Scroll View hack 不太适合我,但我现在就接受它......

于 2014-05-12T19:34:37.510 回答