我目前正在使用带有故事板的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 ...所以现在我想知道发生了什么。
答案 0 :(得分:1)
在这个问题上花了好几个小时后,我找到了解决方案。
在初始导航控制器中,您必须将导航栏设置为半透明。您可以通过选中“半透明”复选框在故事板中执行此操作,如图所示。
如果需要,您仍然可以将颜色(条纹色调)应用到导航栏。
答案 1 :(得分:0)
好的......好吧......我找到了解决方案。感觉很好,但很有效。
我删除了视图控制器中的根视图,并将其替换为UIScrollView,然后将所有组成控件嵌入到滚动视图中。
所以这告诉我,在视图控制器链中的某个地方,“automaticAdjustsScrollViewInserts”可能已经在某个地方出现了?或者也许是一些自动布局怪癖?
如果有人有这些想法仍然持开放态度,因为Scroll View hack与我的关系并不好,但我现在就把它拿走......