Swift, custom UITableViewCell with UIImageView. Need to resize cell to image height(带有 UIImageView 的 Swift 自定义 UITableViewCell.需要将单元格大小调整为图像高度)
问题描述
我正在尝试制作应用程序,它将在表格视图中显示图像.我有带有图像视图的自定义单元格.它只需要从 url 下载图片数据:
I'am trying to make app, that will show images in table view. I have custom cell with image view. It only must download image data from url:
@IBOutlet weak var tweetImage: UIImageView!
var imageData : MediaItem? { didSet { updateUI() }}
func updateUI(){
tweetImage.image = nil
if let url = imageData?.url {
if let data = NSData(contentsOfURL: url) {
tweetImage.image = UIImage(data: data)
}
}
}
我需要在下载后更改单元格高度.它必须等于图像的高度.我在 viewController 中设置了自动尺寸:
I need to get the cell height was changed after the download. It must be equal to the height of the image. I set auto dimension in viewController:
override func viewDidLoad() {
super.viewDidLoad()
tableView.estimatedRowHeight = tableView.rowHeight
tableView.rowHeight = UITableViewAutomaticDimension
}
我将aspect fit"设置为图像,我得到了奇怪的结果.图像超出了单元格的边界.也许我需要设置一些约束……我不知道.
I set "aspect fit" to image, I get strange results. The image extends beyond the boundaries of the cell. Maybe i need to set some constraints... I don't know.
结果:
但我需要这个:
推荐答案
如果要异步加载图片:
加载并设置新的 UIImage
后,您可以通过 UITableView
函数重新加载特定的单元格:
After you load and set new UIImage
, you can reload specific cell via UITableView
function:
- (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation
在你的 UIViewController 中:
In your UIViewController:
override func viewDidLoad() {
super.viewDidLoad()
tableView.estimatedRowHeight = tableView.rowHeight
tableView.rowHeight = UITableViewAutomaticDimension
NSNotificationCenter.defaultCenter().addObserver(self, selector: "imageDidLoadNotification:", name:"CellDidLoadImageDidLoadNotification", object: nil)
}
func imageDidLoadNotification(notification: NSNotification) {
if let cell = notification.object as? UITableViewCell
let indexPath = tableView.indexPathForCell(cell) {
tableView.reloadRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.None)
}
}
在你的 UITableViewCell 中
In your UITableViewCell
func updateUI(){
tweetImage.image = nil
if let url = imageData?.url {
if let data = NSData(contentsOfURL: url) {
tweetImage.image = UIImage(data: data)
NSNotificationCenter.defaultCenter().postNotificationName("CellDidLoadImageDidLoadNotification", object: self)
}
}
}
这篇关于带有 UIImageView 的 Swift 自定义 UITableViewCell.需要将单元格大小调整为图像高度的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:带有 UIImageView 的 Swift 自定义 UITableViewCell.需要将单元格大小调整为图像高度
基础教程推荐
- 如何在没有IB的情况下将2个按钮添加到右侧的UINavigationbar? 2022-01-01
- android 应用程序已发布,但在 google play 中找不到 2022-01-01
- 在 gmail 中为 ios 应用程序检索朋友的朋友 2022-01-01
- Android:对话框关闭而不调用关闭 2022-01-01
- 当从同一个组件调用时,两个 IBAction 触发的顺序是什么? 2022-01-01
- 如何在 UIImageView 中异步加载图像? 2022-01-01
- Kivy Buildozer 无法构建 apk,命令失败:./distribute.sh -m “kivy"d 2022-01-01
- 如何在 iPhone 上显示来自 API 的 HTML 文本? 2022-01-01
- 如何让对象对 Cocos2D 中的触摸做出反应? 2022-01-01
- UIWebView 委托方法 shouldStartLoadWithRequest:在 WKWebView 中等效? 2022-01-01