如何在目标 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 框架

如何在标题视图 iOS 中创建故事板布局多个视图?

如何在 React 中创建多个布局?

如何管理适用于 iOS 7 和 iOS 6.0 的自动布局约束

自动布局问题

调整键盘的自动布局视图