我正在尝试使用与Instagram完全相同的匿名Feed制作应用。我使用AFNetworking下载JSON数据和SDWebImage来添加和缓存图像。
当我加载可变大小的图像时,我希望表格视图单元格自动调整其高度。
现在的问题是当应用程序加载时,图像显示不正确但在我向下滚动并向后滚动回同一个单元格后,图像会按照我想要的方式自行调整,但图像上方和下方总是有空格
以下是UIImage视图的约束:
这是我的ViewDidLoad方法代码:
override func viewDidLoad() {
super.viewDidLoad()
self.navigationController?.navigationBar.barTintColor = UIColor.yellowColor()
feedList = NSMutableArray()
self.feedTable.rowHeight = UITableViewAutomaticDimension
self.feedTable.estimatedRowHeight = 200.0
var connection : CommunicationManager! = CommunicationManager()
//initiate a connection and load feed data
connection.getFeedData( { (response, error) -> Void in
if(response != nil){
dispatch_async(dispatch_get_main_queue(), {
self.feedList = response
self.feedTable.hidden = false
self.feedTable.reloadData()
})
}
}
TableView&#39的CellForRowAtIndex:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! FeedTableViewCell
let feedData : NSDictionary! = feedList[indexPath.row] as! NSDictionary
let imgURL : NSURL! = NSURL(string: feedData.valueForKey("image_name") as! String)
cell.feedImage.sd_setImageWithURL(imgURL, placeholderImage: UIImage(named: "LoadingImage"))
return cell
}
我尽力解决这个问题,却无法使其发挥作用。任何人都可以告诉我如何使用故事板解决这个问题。 提前谢谢。
答案 0 :(得分:0)
您需要调用layoutIfneeded方法:使用以下代码: -
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
CustomTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cellId"];
[cell.nImageView sd_setImageWithURL:[NSURL URLWithString:[imageUrlArray objectAtIndex:indexPath.row]] completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {
cell.widthConst.constant = image.size.width;
[cell layoutIfNeeded];
[cell layoutSubviews];
}];
return cell;
}
如果你想要动态宽度,那么你需要添加固定宽度约束并在块中更新它。