当半透明为True时,在NavigationBar下推送ViewController子视图,以编程方式

时间:2017-12-07 01:44:02

标签: ios swift cocoa-touch uiview

这个问题要求在Swift 4,iOS 11中实现

有什么方法可以让ViewController视图的每个子视图在UINavigationBar下被推下来?

如果导航栏不是TRANSLUCENT,则子视图位于其下方。这就是我想要的。

Desired Result

但是当导航栏是TRANSLUCENT时,子视图就在它下面。我不想要它。我希望子视图被推下来就好像导航栏不是半透明的。

Undesired Result

我以编程方式创建视图:

 class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        self.view.backgroundColor = UIColor.red
        let navBar = (self.parent as? UINavigationController)?.navigationBar
        navBar?.isTranslucent = true
    }

    func makeChildView() {
        let myframe = CGRect(x: 0, y: 10, width: self.view.frame.width, height: 
    self.view.frame.height * 0.4)
        let view = UIView(frame: myframe)
        view.backgroundColor = UIColor.green
        self.view.addSubview(view)
    }

使用Autolayout

我可以使用autolayout解决这个问题。但我只是想知道如果可能的话如何在没有autolayout的情况下实现这个结果。还有其他方法吗?

1 个答案:

答案 0 :(得分:0)

Swift 3.x

navBar?.isTranslucent = true
self.automaticallyAdjustsScrollViewInsets = false

添加此行&你很高兴。