簡體   English   中英

UIProgressView約束問題

[英]UIProgressView constraints issue

我有一個UIProgressView,它以編程方式添加到情節提要視圖中,並帶有將其放置在導航欄底部的約束。 有一個菜單,在打開時會暫時隱藏導航欄,在關閉時會再次取消隱藏它。 打開和關閉此菜單后,UIProgressView上的約束將其放置在窗口的頂部,因此導航欄將其隱藏。 因此,在隱藏導航欄的同時,布局和約束似乎正在重新計算和應用。 在取消隱藏導航欄后,如何強制應用約束? 我試過layoutIfNeeded無濟於事。 此外,由於視圖是嵌入在導航控制器中的放置在故事板上的視圖,因此很難了解視圖層次結構,但是該視圖的定制視圖控制器從xib加載了自己的視圖。 關於如何強制應用約束並解密視圖層次結構的任何想法?

沒有看到您的代碼很難回答。 通過這種方式工作:

override func viewDidLoad() {
    super.viewDidLoad()

    // if VC is pushed in a navigation controller I add a progress bar
    if let navigationVC = self.navigationController {

        // create progress bar with .bar style and add it as subview
        let progressBar = UIProgressView(progressViewStyle: .Bar)
        navigationVC.navigationBar.addSubview(progressBar)

        // create constraints
        // NOTE: bottom constraint has 1 as constant value instead of 0; this way the progress bar will look like the one in Safari
        let bottomConstraint = NSLayoutConstraint(item: navigationVC.navigationBar, attribute: .Bottom, relatedBy: .Equal, toItem: progressBar, attribute: .Bottom, multiplier: 1, constant: 1)
        let leftConstraint = NSLayoutConstraint(item: navigationVC.navigationBar, attribute: .Leading, relatedBy: .Equal, toItem: progressBar, attribute: .Leading, multiplier: 1, constant: 0)
        let rightConstraint = NSLayoutConstraint(item: navigationVC.navigationBar, attribute: .Trailing, relatedBy: .Equal, toItem: progressBar, attribute: .Trailing, multiplier: 1, constant: 0)

        // add constraints
        progressBar.translatesAutoresizingMaskIntoConstraints = false
        navigationVC.view.addConstraints([bottomConstraint, leftConstraint, rightConstraint])
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM