2016-11-24 148 views
0

我已經創建了一個自定義的導航欄。現在我將其添加到viewwillappear method.Due,因爲當我返回到我的視圖控制器它需要時間加載。在viewwillappear中添加自定義導航欄會導致導航速度變慢?

func addViewToNav() 
    { 
    myView = UIView(frame: CGRect(x: 0, y: 20, width: (self.navigationController?.navigationBar.frame.size.width)!-40, height: (self.navigationController?.navigationBar.frame.size.height)!)) 

    imageView.frame = CGRect(x: 5, y: (myView?.frame.size.height)!/2-14, width: 28, height: 28) 
    let image = UIImage(named: "download") 
    imageView.contentMode=UIViewContentMode.scaleAspectFill 
    imageView.image=image 
    imageView.layer.borderColor = UIColor.white.cgColor 
    imageView.layer.cornerRadius = imageView.frame.size.width/2 
    imageView.clipsToBounds = true 
    imageView.backgroundColor=UIColor.yellow 
    label = UILabel(frame: CGRect(x: imageView.frame.size.width+15, y: 0, width: 150, height: (myView?.frame.size.height)!)) 
    label?.text="Label" 
    label?.textColor=UIColor.white 
    myView?.addSubview(imageView) 
    myView?.addSubview(label!) 
    self.navigationController?.view.addSubview(myView!) 
    //add tap gesturte on imageview & label 
    let tapGesture = UITapGestureRecognizer(target: self, action: #selector(self.tapBlurButton(_:))) 
    myView?.isUserInteractionEnabled=true 
    tapGesture.numberOfTapsRequired=1 
    myView?.addGestureRecognizer(tapGesture) 
    } 

請指導我如何使它快速,因爲這是非常緩慢的。

+0

查看圖片大小可能過大 –

回答

0

這是需要時間,因爲每次控制器出現在屏幕上viewWillAppear將被調用,並且每次創建自定義視圖的代碼,將其添加爲子視圖,然後添加手勢識別器將被執行。

有2種方式,可能減少處理時間:如果你想這樣做編程,將添加代碼來創建和viewDidLoad添加自定義導航欄,而不是viewWillAppear

    1. storyboard本身中添加自定義導航欄,並在控制器中爲其創建出口連接。