代码之家  ›  专栏  ›  技术社区  ›  Vincent Joseph

在UINavigationController中设置图像时不显示图像

  •  0
  • Vincent Joseph  · 技术社区  · 8 年前

    我正在尝试构建一个Cocoa Touch类,该类分配给我的导航控制器(在我的故事板中),以便在导航栏的中心显示图像。应用程序生成了,但图像没有显示,我不知道为什么。

    enter image description here

    class NavBarImg: UINavigationController {
    
    
        required init(coder aDecoder: NSCoder){
            super.init(coder: aDecoder)!
            setupView()
        }
    
        func setupView(){
            if navigationController == nil {
                return
            }
    
            let image = #imageLiteral(resourceName: "BarTabsNavLogoWhite")
            let imageView = UIImageView(image: image)
    
            let bannerWidth = navigationBar.frame.size.width
            let bannerHeight = navigationBar.frame.size.height
    
            let bannerX = bannerWidth / 2 - image.size.width / 2
            let bannerY = bannerHeight / 2 - image.size.height / 2
    
            imageView.frame = CGRect(x: bannerX, y: bannerY, width: bannerWidth, height: bannerHeight)
            imageView.contentMode = .scaleAspectFit
    
            self.navigationItem.titleView = imageView  
    
        }
    }
    
    2 回复  |  直到 8 年前
        1
  •  0
  •   Vincent Joseph    8 年前

    为UINavigationController创建cocoa touch类>执行以下代码(>);在情节提要中将类指定给导航控制器。

    class NavControllerClass: UINavigationController {
    
    override func viewDidLoad() {
        super.viewDidLoad()
        setupNavigationBar()
    
    }
    
    func setupNavigationBar()
    {
        let image = #imageLiteral(resourceName: "BarTabsNavLogoWhite")
        let imageView = UIImageView(image: image)
        imageView.frame = navigationBar.frame
        imageView.contentMode = .scaleAspectFit
        navigationBar.addSubview(imageView)
    }
    
    }
    
        2
  •  0
  •   Donald Duck user7392049    8 年前

    setupView 在里面 prepareForInterfaceBuilder() (除非有一些代码没有共享),这只是在情节提要上预览。 要在运行应用程序时执行此操作,还需要在 init?(coder: NSCoder) .