URL图像不适用于Swift Playgrounds中的UIButton

问题描述 投票:0回答:1

我正在尝试使用以下代码从URL创建UIImage,并在浏览器中输入URL工作正常。该按钮也可以完美地工作,如果我更改背景颜色则显示,但图像不会显示在按钮上。我正在使用最新版本的Swift Playgrounds。

let ARIconURLString = "https://lh3.googleusercontent.com/emT3b9yhU2o-uz-ZOoomqucgSvylLeWOKYKWbz88tP9zWJSzmIKiADxTWtxD39OiCO_aitwvhIzQ8ICmFbjSuZPTAgvgIEADjN3eft3IQewMVNNLsiKlYPQqnIzAvtn98Do5tBkAcNcY0Li1mX01UQmYyGBx8jF9oCytWirOxOwU68cF00oioqb1x-PVddQiMwcKf1UYtsqSUVXGvwK4G2KkSWOgvXYiH243bzt9PdVvDmz6rVsKqqTUTJewsKyyQf77xF772T8E_tkGQx0g-h8xgKhBhWJI21Zr2v1Z6A_c5xY7arR2ltA-m_yV30afoPm1wCz4dosnqNs7VqCdt2VnhMLhjc-NdFeVYG6b1LAmMDyZOFkTw_xrmnh-Z416ffolEtcZMjuNzEbHwBFwFDsmpMJj-R4SKXrRxtgBrYwRCpG1G3icgI_0G-Kj_rHIHrw4nMfHb708X5_K1SKIyeL5LIThfnxk5JOuS11vX680nFMRu9kmzrP3IdFoJT-6JLYPHtuTgS0kXfcoN7F3QSKd6E2Fl-X8uOxNRSbl9lvKk0I7ymChF5XFHJh5Q1zWCFxczDf8gEdQ1gKGJn4IrzISSwGqw51U2BgGQ6t5qV26CYIoRVeG1tZYUPBdtOdwrOPXgoP6oZDlemcfuJhxJxC4qAV8CSA=s512-no"
    let ARIconURL = URL(string: ARIconURLString)!
    let ARIconData = try! Data(contentsOf: ARIconURL)
    let ARIcon = UIImage(data: ARIconData)
    ARButton.contentMode = .scaleAspectFit
    ARButton.setImage(ARIcon, for: .normal)
ios swift swift-playground
1个回答
0
投票

使用同步代码通常是一种不好的做法。通常你可以获得图像异步:

   final private func downloadFrom(urlString: String?){


    self.imageView.image = nil

    guard let urlString = urlString, let myURL = URL(string: urlString) else{
        return
    }

    let session = URLSession.shared

    self.task = session.dataTask(with: myURL) { (data: Data?, response: URLResponse?, error: Error?) in

        if let error = error  {
            print(error)
            return
        }


    guard let data = data else{
        return
    }


    if 200 ... 299 ~= statusCode {            
        self.loadImage(data: data)
    }else{
        // self.manageError(data: data)
    }

}

self.task?.resume()
}




final private func loadImage(data : Data){
        let image = UIImage(data: data)
        DispatchQueue.main.async {
            self.imageView.image = image
        }
}
© www.soinside.com 2019 - 2024. All rights reserved.