在我的tableviewcell
中,我有一个UIImageView
。此ImageView
用于向用户呈现录制视频的缩略图。下面是我如何设置ImageView
。
@IBOutlet weak var thumbImageView: UIImageView! {
didSet {
let videoUrl = NSURL(string: Link to Video )
var thumbImage: UIImage?
let asset = AVAsset(URL: videoUrl!)
let assetImgGenerate = AVAssetImageGenerator(asset: asset)
assetImgGenerate.appliesPreferredTrackTransform = true
let time = CMTimeMake(asset.duration.value / 3, asset.duration.timescale)
if let cgImage = try? assetImgGenerate.copyCGImageAtTime(time, actualTime: nil) {
thumbImage = UIImage(CGImage: cgImage)
print("Got Thumb")
self.thumbImageView.image = UIImage(CGImage: cgImage)
}
}
}
在我的 TableViewCell
中,我还有:
var URL: String? {
didSet {
print(URL!)
}
}
在我的 TableView
中,我调用 Parse 数据库,其中存储了用户在我的 S3 服务器上保存的视频链接。在 CellForRowAtIndexPath
方法中,我使用 PFObject 为我的 URL 变量提供 URL:
cell.URL = Some URL
我想要的工作是:
let videoURL = NSURL(string: self.URL!)
但是当我运行传递给thumbImageView的URL的代码时,我得到了nil。我应该有其他方法来设置它吗?
感谢任何帮助!
最佳答案
您希望将 didSet
代码从 thumbImageView
移动到 URL
属性,以便在 URL 发生变化时加载图像。
目前,您的代码不会在正确的时间运行,因为仅当从 Storyboard/xib 加载单元格时才会设置 imageView
。
关于swift - TableViewController 和自定义 UITableViewCell 之间的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35516585/