Aspect填写导航栏图像?

时间:2016-09-19 19:00:19

标签: ios swift uiimage uinavigationbar

我想要为我的导航控制器的背景图像获得与imageView的方面相同的外观。

目前我正在使用它来设置图片:

UINavigationBar.appearance().setBackgroundImage(imageToCache?.resizableImage(withCapInsets: UIEdgeInsetsMake(0, 0, 0, 0), resizingMode: UIImageResizingMode.stretch), for: .default)

UIImageResizingMode.stretch显然给了我一个讨厌的拉伸外观。如果图像在顶部/底部被切断,我不在乎,我只是需要将它放入完整尺寸的导航栏和显示的节目。

我无法将nil传递给调整大小模式。

还有

init(rawValue:)) 
调整大小模式的

选项,但我放入的任何数字都会导致背景中没有图像。

有什么想法吗?

编辑:

let picture = passedPerson.pictureURL!


         if let imageFromCache = MainPageVC.imageCache.object(forKey: picture as String as NSString) {


                var titleView = UIImageView()
                titleView.contentMode = .scaleAspectFit
              titleView.image = imageFromCache

        self.navigationItem.titleView = titleView  } else {
        print(picture)
        var requested = URLRequest(url: URL(string: picture)!)

        URLSession.shared.dataTask(with: requested) {data, response, err in


            if err != nil {

                print(err?.localizedDescription)
            } else {


                DispatchQueue.main.async {

                    let imageToCache = UIImage(data: data!)

                    MainPageVC.imageCache.setObject(imageToCache!, forKey: picture as String as NSString)

                    var titleView = UIImageView()
                    titleView.contentMode = .scaleAspectFit
                    titleView.image = imageToCache

                    self.navigationItem.titleView = titleView


                  //  UINavigationBar.appearance().setBackgroundImage(imageToCache?.resizableImage(withCapInsets: UIEdgeInsetsMake(0, 0, 0, 0), resizingMode: UIImageResizingMode.stretch), for: .default)
                }

            }

            }.resume()

以上结果没有显示图片。

1 个答案:

答案 0 :(得分:1)

试试这个。希望你能工作

UINavigationBar.appearance().setBackgroundImage(imageToCache‌​, forBarMetrics: .Default)