Ios 使用AutoLayout在UITableView中设置框架不适用于UIImage
我有一个自定义的Ios 使用AutoLayout在UITableView中设置框架不适用于UIImage,ios,objective-c,uitableview,uiimage,autolayout,Ios,Objective C,Uitableview,Uiimage,Autolayout,我有一个自定义的UITableViewCell,如下图所示: 这些图像有不同的高度和宽度,我需要保持它们的纵横比,并在我的tableview中显示它们。因此,我将控制器配置为以下代码: - (void)viewDidLoad { ... UINib *nibResponderImage = [UINib nibWithNibName:@"ResponderImageCell" bundle:nil]; [self.tableView registerNib:nib
UITableViewCell
,如下图所示:
这些图像有不同的高度和宽度,我需要保持它们的纵横比,并在我的tableview中显示它们。因此,我将控制器配置为以下代码:
- (void)viewDidLoad
{
...
UINib *nibResponderImage = [UINib nibWithNibName:@"ResponderImageCell" bundle:nil];
[self.tableView registerNib:nibResponderImage forCellReuseIdentifier:@"ResponderImage"];
self.tableView.rowHeight = UITableViewAutomaticDimension;
self.tableView.estimatedRowHeight = 80.0;
...
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
...
MessageLTableViewCell *cell = (MessageLTableViewCell *)[self.tableView dequeueReusableCellWithIdentifier:@"ResponderImage" forIndexPath:indexPath];
[cell.mediaThumb setFrame:CGRectMake(50,50,100,100)];
[cell.mediaThumb layoutIfNeeded];
[cell layoutIfNeeded];
cell.mediaThumb.image = [UIImage imageNamed:@"sample_image"];
[cell.mediaThumb setFrame:CGRectMake(50,50,100,100)];
[cell.mediaThumb layoutIfNeeded];
[cell layoutIfNeeded];
...
}
示例图像的大小很大。此外,我还设置了恒定的帧大小,以便于调试
问题是没有设置新的帧。因此,结果将是下图:
如何解决此问题?在调整单元格大小后,尝试调用[cell setNeedsUpdateConstraints]imageview@Mr.T不幸的是,这不起作用。yiu是否对高度进行了限制?@T先生,正如您在第一张图片中看到的,没有。正如@dan所说,您必须通过编程或在nib中为高度/宽度添加限制,否则,您将得到视图的
intrinsicContentSize
,即此处的图像大小。请在调整图像大小后尝试调用[cell setNeedsUpdateConstraints]imageview@Mr.T不幸的是,这不起作用。姚先生对身高有限制吗?@T先生,正如你在第一张照片中看到的,没有,必须以编程方式或在nib中为高度/宽度添加约束,否则最终将得到视图的intrinsicContentSize
,即此处的图像大小