SWRevealViewController按下前视图控制器

时间:2014-05-12 15:47:32

标签: uiviewcontroller uinavigationcontroller swrevealviewcontroller

我目前正在使用带有故事板的SWRevealViewController,我看到的是直到最近才看到的行为。

最初,在我的一个前视图控制器中,我使用的是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 ...所以现在我想知道发生了什么。

2 个答案:

答案 0 :(得分:1)

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

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

Check the "translucent" box in the inspector.

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

答案 1 :(得分:0)

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

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

所以这告诉我,在视图控制器链中的某个地方,“automaticAdjustsScrollViewInserts”可能已经在某个地方出现了?或者也许是一些自动布局怪癖?

如果有人有这些想法仍然持开放态度,因为Scroll View hack与我的关系并不好,但我现在就把它拿走......