UINavigationBar内容模式未设置

时间:2017-08-28 17:21:03

标签: ios swift

我正在尝试制作UINavigationBar图像的背景,而图像并不是条形图的确切大小。出于某种原因,我似乎无法正确设置栏的contentMode。这是我的代码:

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)

    // ...


    let image = UIImage(named: object?.imageName ?? "")
    navigationController?.navigationBar.alpha = 0
    navigationController?.navigationBar.setBackgroundImage(image, for: .default)
    self.navigationController?.navigationBar.contentMode = .scaleAspectFill
    UIView.animate(withDuration: Double(UINavigationControllerHideShowBarDuration), animations: {
        self.navigationController?.navigationBar.alpha = 1
    })
}

我不知道我做错了什么,或者contentModeUINavigationBar没有做任何事情。

目前正在发生的事情是背景图像再次像马赛克一样呈现

由于

1 个答案:

答案 0 :(得分:0)

您可以创建UIView并向其添加图像和文本,但必须设置约束

    let titleView = UIView()
    titleView.frame = CGRect(x: 0, y: 0, width: 100, height: 40)

    let containerView = UIView()
    containerView.translatesAutoresizingMaskIntoConstraints = false

    titleView.addSubview(containerView)

    let profileImageView = UIImageView()
    profileImageView.translatesAutoresizingMaskIntoConstraints = false
    profileImageView.contentMode = .scaleAspectFill
    profileImageView.layer.cornerRadius = 20
    profileImageView.clipsToBounds = true
    containerView.addSubview(profileImageView)

    profileImageView.leftAnchor.constraint(equalTo: containerView.leftAnchor).isActive = true
    profileImageView.centerYAnchor.constraint(equalTo: containerView.centerYAnchor).isActive = true
    profileImageView.widthAnchor.constraint(equalToConstant: 40).isActive = true
    profileImageView.heightAnchor.constraint(equalToConstant: 40).isActive = true

    self.navigationItem.titleView = titleView

    titleView.addGestureRecognizer(UITapGestureRecognizer(target: 
    self, action: #selector(func)))

我希望我帮助你