如何在目标 c 中创建程序化自动布局?
Posted
技术标签:
【中文标题】如何在目标 c 中创建程序化自动布局?【英文标题】:How to create programatic autolayout in objective c? 【发布时间】:2017-06-07 05:29:13 【问题描述】:我想在表格中显示内容(包括图像、标题和描述)。 我正在尝试为相同的设置自动布局。但是我的图像会根据单元格高度缩小。 但我想将图像显示为原始图像(所有图像的高度宽度不同)
UIImageView *customImageView;
UILabel *customLabel;
customImageView = [[UIImageView alloc] init];
customImageView.translatesAutoresizingMaskIntoConstraints = NO;
customImageView.tag = indexPath.row + 100;
customImageView.translatesAutoresizingMaskIntoConstraints = NO;
[cell.contentView addSubview:customImageView];
customLabel = [[UILabel alloc] init];
customLabel.translatesAutoresizingMaskIntoConstraints = NO;
customLabel.tag = indexPath.row + 500;
customLabel.numberOfLines = 0;
customLabel.lineBreakMode = NSLineBreakByWordWrapping;
[cell.contentView addSubview:customLabel];
NSDictionary *views = NSDictionaryOfVariableBindings(customImageView, customLabel);
[cell.contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-5-[customImageView(160)]-[customLabel]|" options:0 metrics:nil views:views]];
[cell.contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-3-[customImageView]-3-|" options:0 metrics:nil views:views]];
[cell.contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-3-[customLabel]-3-|" options:0 metrics:nil views:views]];
1.我可以按原样显示图像吗 2.如何使用约束在标题标签下方添加另一个描述标签? 您能提出一些解决方案或指导我吗?
【问题讨论】:
查看这个答案***.com/a/31651348/3338583 @SyedAliSalman那个答案对我的问题没有帮助 查看***.com/questions/31651022/… 要解决您的图像缩放问题,请将 contentMode 设置为 UIViewContentModeCenter(未缩放)并将压缩阻力设置为高。 【参考方案1】:您只需要UITableViewAutomaticDimension
。 ImageView 具有隐式大小。 ImageViews 的大小基于为其设置的图像。当您的单元格包含具有隐式大小的组件时,您可以使用UITableViewAutomaticDimension
告诉 tableView 根据 imageView 的大小调整单元格的大小。
确保将 imageView 的内容模式设置为 center
代码:
self.tableView.rowHeight = UITableViewAutomaticDimension
self.tableView.estimatedRowHeight = 140
不要在 indexPath 处写行的高度 :)
O/P:
查看单元格大小。根据图像自动更改它们的大小。
编辑:
忘了提到添加到 imageView 和单元格的唯一自动布局约束是尾随、前导、顶部和底部约束,单元格的常量为 0。
【讨论】:
以上是关于如何在目标 c 中创建程序化自动布局?的主要内容,如果未能解决你的问题,请参考以下文章
Swift UITextField:在自动布局中创建一个动态减小的 UITextField 框架