在UITablView中对于包含图像的行,如何确定合适的高度。
对于表中的其他行,可以让它们自动表示自己的行。我在单元格中有一个滚动视图,一旦我从网址获取图像,就会动态添加imageView。
高度(使用autolayout)返回UITableViewAutomaticDimension heightForRowAtIndexPath。
class ImageTableViewCell: UITableViewCell {
var imageURL: NSURL? {
didSet {
cellImage = nil
fetchImage()
}
}
func viewForZoomingInScrollView(scrollView: UIScrollView) -> UIView? {
return imageView
}
@IBOutlet weak var scrollView: UIScrollView!{
didSet {
scrollView.contentSize = cellImageView.frame.size
scrollView.minimumZoomScale = 0.03
scrollView.maximumZoomScale = 1.0
scrollView.zoomScale = 1.0;
}
}
@IBOutlet weak var spinner: UIActivityIndicatorView!
private func fetchImage() {
if let url = imageURL {
spinner?.startAnimating()
let qos = Int(QOS_CLASS_USER_INITIATED.value)
dispatch_async(dispatch_get_global_queue(qos, 0)) {
() -> Void in
let imageData = NSData(contentsOfURL: url)
dispatch_async(dispatch_get_main_queue()) {
if url == self.imageURL {
if imageData != nil {
self.cellImage = UIImage(data: imageData!)
} else {
self.cellImage = nil
}
}
}
}
}
}
private var cellImageView = UIImageView()
private var cellImage: UIImage? {
get { return cellImageView.image }
set {
cellImageView.image = newValue
cellImageView.sizeToFit()
scrollView?.contentSize = cellImageView.frame.size
spinner?.stopAnimating()
}
}
}
答案 0 :(得分:0)
只需从您的单元格中获取imageView中的图像,然后获取图像的高度并在heightForRowAtIndexPath
中使用它:
var cellHeight = cell.yourImageView.image?.size.height