如何从网址链接设置左侧导航栏屁股图像



我创建了一个左侧导航栏按钮,但我不知道如何将 url 中的图像存储到按钮图像中。下面是我的导航栏左按钮代码

     navigationItem.leftBarButtonItem = UIBarButtonItem(image: <#T##UIImage?#>, style: .plain, target: self, action: #selector(handleButtonPressed))

我应该创建一个 UIimage 变量,然后将其用于图像参数吗?有什么建议吗?谢谢!

您需要先下载映像。因此,在下载时,您要么设置占位符图像,要么根本不显示它。但是这段代码应该对您有所帮助。

fund viewDidLoad() {
    super.viewDidLoad()
    let placeholderImage = UIImage(named: "placeholder")
    updateLeftNavigationItem(with: placeholderImage)
    loadNavigationBarImage(from: URL(string: "<your url>")!)
}
func updateLeftNavigationItem(with image: UIImage?) {
    navigationItem.leftBarButtonItem = UIBarButtonItem(image: image, style: .plain, target: self, action: #selector(handleButtonPressed))
}
func loadNavigationBarImage(from url: URL) {
    getDataFromUrl(url: url) { data, response, error in
        guard let data = data, error == nil else { return }
        DispatchQueue.main.async() { [weak self] in
            let image = UIImage(data: data)
            self?.updateLeftNavigationItem(with: image)
        }
    }
}
func getDataFromUrl(url: URL, completion: @escaping (Data?, URLResponse?, Error?) -> ()) {
    URLSession.shared.dataTask(with: url) { data, response, error in
        completion(data, response, error)
    }.resume()
}

对于初始状态

您可以将图像从 url 设置为栏按钮,如下所示:首先将 url 转换为数据,然后转换为 UIImage,然后使用它

let url = URL(string:"http://www.apple.com/euro/ios/ios8/a/generic/images/og.png")
if let data = try? Data(contentsOf: url!)
{
  let Serverimage: UIImage = UIImage(data: data)
  let barButton = UIBarButtonItem(image: Serverimage, landscapeImagePhone: nil, style: .Done, target: self, action: #selector(handleButtonPressed))
  self.navigationItem.leftBarButtonItem = barButton
}

万事如意。希望这对您有所帮助。

最新更新