2016-11-24 108 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本身中添加自定义导航栏,并在控制器中为其创建出口连接。