Ios 为什么我不能设置图像?
为什么我不能设置图像Ios 为什么我不能设置图像?,ios,swift,uitableview,swift3,uiimageview,Ios,Swift,Uitableview,Swift3,Uiimageview,为什么我不能设置图像 class ViewController:UIViewController,UITableViewDelegate,UITalbeViewDataSource{ func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentif
class ViewController:UIViewController,UITableViewDelegate,UITalbeViewDataSource{
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell",for: indexPath) as! CustomTableViewCell
cell.setCell()
return cell
}
}
class CustomTableViewCell:UITableViewCell{
@IBOutlet weak var artworkImage:UIImageView!
func setCell(){
let urlStr = "http://is3.mzstatic.com/image/thumb/Music20/v4/d4/6c/af/d46caf98-ff6c-1707-135d-58d6ed9ea6a2/source/500x500bb.jpg"
let url = URL(strings: urlStr)
let data = try? Data(contentsOf: url!)
if let imageData = data {
self.artworkImage.image = UIImage(data: imageData)
}
}
}
我想在TableView中显示URL目标的图像,但该图像不显示
此图像是日志。您正试图在后台线程中设置图像,因为您收到此日志。在imageView上显示图像时,需要使用主线程,如:
if let imageData = data {
DispatchQueue.main.async(execute: {
self.artworkImage.image = UIImage(data: imageData)
})
}
您正试图在后台线程中设置图像,因为您收到了此日志。在imageView上显示图像时,需要使用主线程,如:
if let imageData = data {
DispatchQueue.main.async(execute: {
self.artworkImage.image = UIImage(data: imageData)
})
}
对于图像,尤其是单元格上的ImageView,请尝试此库:- 设URLString=self.items[indexPath.row] 让URL=NSURL(string:URLString)
cell.imageView.hnk_setImageFromURL(URL)对于图像,尤其是单元格上的imageView,请尝试此库:- 设URLString=self.items[indexPath.row] 让URL=NSURL(string:URLString) cell.imageView.hnk_setImageFromURL(URL)单元格:
class CustomTableViewCell: UITableViewCell {
@IBOutlet weak var artworkImage:UIImageView!
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}
func setCell(){
let urlStr = "http://is3.mzstatic.com/image/thumb/Music20/v4/d4/6c/af/d46caf98-ff6c-1707-135d-58d6ed9ea6a2/source/500x500bb.jpg"
let url = URL(string: urlStr)
let data = try? Data(contentsOf: url!)
DispatchQueue.main.async {
if let imageData = data {
self.artworkImage.image = UIImage(data: imageData)
} }
}
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
}
也不要忘记。设置应用程序传输安全设置
。
祝你好运单元格:
class CustomTableViewCell: UITableViewCell {
@IBOutlet weak var artworkImage:UIImageView!
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}
func setCell(){
let urlStr = "http://is3.mzstatic.com/image/thumb/Music20/v4/d4/6c/af/d46caf98-ff6c-1707-135d-58d6ed9ea6a2/source/500x500bb.jpg"
let url = URL(string: urlStr)
let data = try? Data(contentsOf: url!)
DispatchQueue.main.async {
if let imageData = data {
self.artworkImage.image = UIImage(data: imageData)
} }
}
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
}
也不要忘记。设置应用程序传输安全设置
。
祝你好运setCell()
应该是这样的
func setCell(){
let urlStr = "http://is3.mzstatic.com/image/thumb/Music20/v4/d4/6c/af/d46caf98-ff6c-1707-135d-58d6ed9ea6a2/source/500x500bb.jpg"
let url = URL(string: urlStr)
artworkImage.image = UIImage(named: "ic_placeholder")
DispatchQueue.global(qos: .background).async {
let data = try? Data(contentsOf: url!)
DispatchQueue.main.async {
if let imageData = data {
self.artworkImage.image = UIImage(data: imageData)
}
}
}
}
图像应该在后台线程上下载,否则UI将被阻止。下载图像后,您需要在主线程中进行更改
最好还有一个占位符图像。setCell()
应该是这样的
func setCell(){
let urlStr = "http://is3.mzstatic.com/image/thumb/Music20/v4/d4/6c/af/d46caf98-ff6c-1707-135d-58d6ed9ea6a2/source/500x500bb.jpg"
let url = URL(string: urlStr)
artworkImage.image = UIImage(named: "ic_placeholder")
DispatchQueue.global(qos: .background).async {
let data = try? Data(contentsOf: url!)
DispatchQueue.main.async {
if let imageData = data {
self.artworkImage.image = UIImage(data: imageData)
}
}
}
}
图像应该在后台线程上下载,否则UI将被阻止。下载图像后,您需要在主线程中进行更改
还有,最好有一个占位符图像。您是否调用函数“setCell”?对不起。我将把它添加到我的问题中。你调用函数“setCell”吗?对不起。我将把它添加到我的问题中。图片已经在主线程上下载了。不需要再次调用主线程。映像已在主线程上下载。不需要再次调用主线程。附加:最好缓存图像。附加:最好缓存图像。