如何在navigationBar中正确设置图像的约束?

时间:2017-07-11 11:31:50

标签: ios swift uiimageview navigationbar

在导航栏中设置图像有成千上万的解释,但是,恕我直言,它们都有同样的问题:它们使用UIImageView的固定高度,但是如果你旋转设备{{1} - 高度减小,图像太高。我试图用约束解决这个问题,但我失败了:

navigationBar

它在横向模式下无效!

1 个答案:

答案 0 :(得分:0)

在这种情况下,您无需设置约束。导航控制器的标题视图具有水平和垂直居中的默认约束,具有固定的宽度和高度。所以你需要做的就是在你的视图中设置帧大小加载

let imageView = UIImageView( image: UIImage( named: "aaa.png" ) )
var frame = imageView.frame
frame.size.height = 30
frame.size.width = 30
imageView.frame = frame
imageView.contentMode = .scaleAspectFit

self.navigationItem.titleView = imageView

然后添加一个侦听器以检测方向更改并相应地更改帧大小。

override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
    let imageView = self.navigationItem.titleView!
    var frame = imageView.frame
    if UIDevice.current.orientation.isLandscape {
        frame.size.height = 10
        frame.size.width = 10
    } else {
        frame.size.height = 30
        frame.size.width = 30
    }
    imageView.frame = frame
}

结果如下所示

enter image description here