UIViewController隐藏在UINavigationController后面,但应放在下面

时间:2017-10-20 20:18:29

标签: ios swift uiview view uinavigationcontroller

我正在开发一个应用程序,我在顶部有一个NavigationBar,并添加了一个UIViewController作为RootViewController。

现在我的计划是向这个UIViewController添加一个新的Subview。新的Subview也扩展了UIViewController。我将控制器的de view(Gray Rect)添加到UIViewController,但它放在NavigationBar后面。我不想那样..所以我搜索了一个解决方案并找到了一些有趣的东西..: 当我只是向UIViewController添加一个UIView()(绿色矩形)时,视图的放置工作完美,我希望从其他UIViewController-View看到它。 enter image description here 我的代码如下:

class DashboardController: UIViewController {

var ccview:ContactCircleController!

override func viewDidLoad() {
    super.viewDidLoad()
    edgesForExtendedLayout = []
    self.view.backgroundColor = .white

    let test = UIView()
    test.backgroundColor = .green
    test.frame = CGRect(x: self.view.frame.width - 200, y: 0, width: self.view.frame.width / 2, height: self.view.frame.width / 2)
    self.view.addSubview(test)
    setup()
}

func setup(){
    ccview = ContactCircleController()

    ccview.view.frame = CGRect(x: 0, y: 0, width: self.view.frame.width / 2, height: self.view.frame.width / 2)
    ccview.edgesForExtendedLayout = UIRectEdge.top
    self.view.addSubview(ccview.view)
 }}

我已经取消选中了“Extend Edges” - 在故事板上切换导航控制器。我还将edgeForExtendedLayout = []添加到UIViewController,对于UIView,它工作得很好。但是对于另一个UIViewController的视图......它没有用。

谢谢!

1 个答案:

答案 0 :(得分:0)

如果您使用调试视图层次结构,您会看到导航栏后面的灰色.exe ,而是保持Start "" "%~dp0TeamViewer_Assignment.exe" "-apitoken 123-XXX" ""-datafile "C:\Program Files (x86)\TeamViewer\AssignmentData.json""" ""-devicealias "Computer""" 的高度。

这是因为从Storyboard实例化的ccview.view的{​​{1}}默认情况下为self.view.frame.width / 2,而.view的{​​{1}}在没有情节提要的情况下实例化有一个默认的UIViewController

您可以将.autoresizingMask = []更改为:

来更正此问题
.view