我从网上下载数据,它由文字和图片组成。我将这些数据放入UITableView,我希望图像成为UITableViewCell的背景。 所有图像都具有相同的分辨率620x350。
所有iPhone都有不同的屏幕尺寸,因此我需要根据屏幕尺寸缩放图像的宽度和高度,并且还要对UITableViewCell执行此操作。
最佳解决方案是什么?
谢谢。
答案 0 :(得分:3)
最佳且干净的解决方案,只是玩单元格的高度,让图像通过Autolayout 自动调整大小。
很容易:
在您的单元格中,添加UIImageView
并设置单元格具有实际高度时您想要的尺寸;
设置为此UIImageView
的约束,至少顶部,底部和一个横向边框(右侧或左侧);设置约束以保持比例宽度/高度;
此时,当细胞生长,图像高度增长,并保持比例(感谢约束)它也调整宽度,具有始终正确且比例合适的尺寸。
现在,您只需编写单元格高度的代码:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
static CGFloat cellDefaultHeight = /*the default height of the cell*/;
static CGFloat screenDefaultHeight = /*the default height of the screen i.e. 480 in iPhone 4*/;
CGFloat factor = cellDefaultHeight/screenDefaultHeight
return factor * [UIScreen mainScreen].bounds.size.height;
}
显然,将contentMode
的{{1}}设置为UIImageView
。
答案 1 :(得分:2)
只需使用- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
CGFloat aspectRatio = 350.0f/620.0f;
return aspectRatio * [UIScreen mainScreen].bounds.size.width;// assuming that the image will stretch across the width of the screen
}
答案 2 :(得分:-1)
您可以使用-tableView:heightForRowAtIndexPath:
中的HTTableViewDelegate
方法返回每个单元格的高度。在你的情况下,你会想要这样的东西:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
return [UIScreen mainScreen].bounds.size.height;
}