7

Dimmi per favore come aggiungere un ProgressView sotto la barra di navigazione? Provo ad utilizzare la soluzione in questo post: adding progress bar under navigation bar, ma il codice è stato scritto in linguaggio ObjectiveC ... Provo a tradurre in Swift. Questo è il codice che ho aggiunto nella mia navigationController SubClassAggiungendo la barra di avanzamento sotto la barra di navigazione in rapido?

import UIKit 
class CustomNavigationController: UINavigationController { 

@IBOutlet var Secondprogress: UIProgressView! 
override func viewDidLoad() { 
    super.viewDidLoad() 



    NSLayoutConstraint.deactivateConstraints(self.view.constraints()) 

    Secondprogress?.setTranslatesAutoresizingMaskIntoConstraints(false) 




    var navBar = self.navigationController?.navigationBar 
    Secondprogress.tag = 1 
    self.view.addSubview(Secondprogress) 

    var Constraint = NSLayoutConstraint(item: self.Secondprogress, 
     attribute:NSLayoutAttribute.Bottom, 
     relatedBy:NSLayoutRelation.Equal, 
     toItem:navBar, 
     attribute:NSLayoutAttribute.Bottom, 
     multiplier:1.0, 
     constant:-0.5); 

    self.view.addConstraint(Constraint); 

    Constraint = NSLayoutConstraint(item: self.Secondprogress, 
     attribute:NSLayoutAttribute.Left, 
     relatedBy:NSLayoutRelation.Equal, 
     toItem:navBar, 
     attribute:NSLayoutAttribute.Left, 
     multiplier:1.0, 
     constant:0); 

    self.view.addConstraint(Constraint); 

    Constraint = NSLayoutConstraint(item: self.Secondprogress, 
     attribute:NSLayoutAttribute.Right, 
     relatedBy:NSLayoutRelation.Equal, 
     toItem:navBar, 
     attribute:NSLayoutAttribute.Right, 
     multiplier:1.0, 
     constant:0); 

    self.view.addConstraint(Constraint); 

    Secondprogress.setTranslatesAutoresizingMaskIntoConstraints(false) 

    Secondprogress.hidden = false 
    // Do any additional setup after loading the view. 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 

} 

Ma quando compilo la mia applicazione, non vedo l'ProgressView sotto barra di navigazione.

Dov'è il mio errore?

+0

Dovresti accettare una risposta per far sapere agli altri utenti che la tua domanda ha avuto risposta, anche se era da solo. –

+0

Ovviamente! Ma StackOverflow mi dice che posso accettare la mia risposta in 12 ore :) – Dmitry

risposta

7

Il mio problema è stato risolto.

  1. aggiungere la vista Progress per View Controller. (Drag and drop)
  2. Fai un IBOutlet.
  3. scrivere il codice:

    override func viewDidLoad() { 
    super.viewDidLoad() 
    var navBar = self.navigationController?.navigationBar 
    var navBarHeight = navBar?.frame.height 
    var ProgressFrame = self.Progress.frame 
    var pSetX = ProgressFrame.origin.x 
    var pSetY = CGFloat(navBarHeight!) 
    var pSetWidth = self.view.frame.width 
    var pSetHight = ProgressFrame.height 
    
    Progress.frame = CGRectMake(pSetX, pSetY, pSetWidth, pSetHight) 
    self.navigationController?.navigationBar.addSubview(Progress) 
    Progress.setTranslatesAutoresizingMaskIntoConstraints(false) 
    
    } 
    

    4.Success!