我想要为我的导航控制器的背景图像获得与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()
以上结果没有显示图片。
答案 0 :(得分:1)
试试这个。希望你能工作
UINavigationBar.appearance().setBackgroundImage(imageToCache, forBarMetrics: .Default)