我的UITableViewCell
中有图像,在更改了单元格w.r.t图像高度的约束后,我想重新加载单元格。
我试过这种方法,但是这个功能花了很少的时间来执行,因此,应用程序暂停了一段时间。
[cell reloadRowsAtIndexPaths:indexPath withRowAnimation:UITableViewRowAnimationNone];
你能告诉我另一个方法是简单地重新加载单元格而不是表格吗?
答案 0 :(得分:3)
目标c
- (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation;
例如,要重新加载第1部分的第2行和第2部分的第3行, 你必须这样做:
NSIndexPath* indexPath1 = [NSIndexPath indexPathForRow:2 inSection:1];
NSIndexPath* indexPath2 = [NSIndexPath indexPathForRow:3 inSection:2];
// Add them in an index path array
NSArray* indexArray = [NSArray arrayWithObjects:indexPath1, indexPath2, nil];
// Launch reload for the two index path
[self.tableView reloadRowsAtIndexPaths:indexArray withRowAnimation:UITableViewRowAnimationFade];
或者你也可以这样做
[self.tableView beginUpdates];
[self.tableView reloadRowsAtIndexPaths:@[indexPathOfYourCell] withRowAnimation:UITableViewRowAnimationNone];
[self.tableView endUpdates];
// *********** ****************************
<强> SWIFT 强>
override func reloadRows(at indexPaths: [Any], with animation: UITableViewRowAnimation) {
}
例如,要重新加载第1部分的第2行和第2部分的第3行, 你必须这样做:
var indexPath1 = IndexPath(row: 2, section: 1)
var indexPath2 = IndexPath(row: 3, section: 2)
// Add them in an index path array
var indexArray: [Any] = [indexPath1, indexPath2]
/ / Launch reload for the two index path
self.tableView.reloadRows(at: indexArray, with: .fade)
或者你也可以这样做
self.tableView.beginUpdates()
self.tableView.reloadRows(at: [indexPathOfYourCell], with: [])
self.tableView.endUpdates()
答案 1 :(得分:0)
在完全加载图像之前尝试获取图像大小,之后将单元格高度更改为您假装的图像
#import <ImageIO/ImageIO.h>
NSMutableString *imageURL = [NSMutableString stringWithFormat:@"http://www.myimageurl.com/image.png"];
CGImageSourceRef source = CGImageSourceCreateWithURL((CFURLRef)[NSURLURLWithString:imageURL], NULL);
NSDictionary* imageHeader = (__bridge NSDictionary*) CGImageSourceCopyPropertiesAtIndex(source, 0, NULL);
NSLog(@"Image header %@",imageHeader);
NSLog(@"PixelHeight %@",[imageHeader objectForKey:@"PixelHeight"]);
用这个你可以得到图像大小,调整UIImageView并获得它的动态高度
为了能够执行此异步操作,您可以使用YYWebImage