Ios 自动布局-在表格单元格中对齐视图

Ios 自动布局-在表格单元格中对齐视图,ios,uitableview,autolayout,Ios,Uitableview,Autolayout,我目前正在将iOS应用程序移植到autolayout,发现了一个无法解决的问题。问题在于UITableView 表格非常简单: 每个单元格包含两个标签,标签之间有水平间距 我希望第一个标签根据内容自动调整大小 我希望所有单元格中的标签具有相同的宽度 第1点。二,。很简单,但我不知道如何创建约束,强制不同单元格中的视图具有相同的大小 是否有任何自动布局解决方案,或者我必须手动设置框架?我将通过创建带有两个标签的自定义单元类来实现这一点。为左标签指定宽度约束(以及单元格左边缘和中心的约束),为右标签

我目前正在将iOS应用程序移植到autolayout,发现了一个无法解决的问题。问题在于
UITableView

表格非常简单:

  • 每个单元格包含两个标签,标签之间有水平间距
  • 我希望第一个标签根据内容自动调整大小
  • 我希望所有单元格中的标签具有相同的宽度
  • 第1点。二,。很简单,但我不知道如何创建约束,强制不同单元格中的视图具有相同的大小


    是否有任何自动布局解决方案,或者我必须手动设置框架?

    我将通过创建带有两个标签的自定义单元类来实现这一点。为左标签指定宽度约束(以及单元格左边缘和中心的约束),为右标签指定左标签的水平间距约束。将IBOutlet设置为两个标签,并将其中一个设置为左侧标签的宽度约束(在我的示例中,我将其称为widthCon)。在我的例子中,我给了两个标签一个背景色,这样我就可以看到宽度。我计算viewDidLoad中最长字符串的宽度,然后使用该数字调整cellForRowAtIndexPath中宽度约束的常数:

    @interface TableController ()
    @property (strong,nonatomic) NSArray *theData;
    @property (nonatomic) CGFloat maxWidth;
    @end
    
    @implementation TableController 
    
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        self.theData = @[@"One",@"Two",@"Three Hundred Forty",@"Four",@"Five",@"Six",@"Seven",@"Eight",@"Nine"];
        self.maxWidth = 0;
        for (NSString *s in self.theData) {
            CGSize stringSize = [s sizeWithFont:[UIFont systemFontOfSize:17]];
            if (stringSize.width > self.maxWidth) self.maxWidth = stringSize.width;
        }
        [self.tableView reloadData];
    }
    
    
    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
        return self.theData.count;
    }
    
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    
        RDCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];
        cell.widthCon.constant = self.maxWidth;
        cell.leftLabel.text = self.theData[indexPath.row];
        return cell;
    } 
    

    1和3如何兼容?是否希望所有标签都是任何单元格中最长文本的宽度?你的意思是你也希望左右标签的大小相同吗?@rdelmar完全正确。我希望所有左边的标签都具有最长文本的宽度。我唯一的想法是在表外有一个隐藏视图,并为此视图和每个单元格中的左标签添加宽度约束(以代码形式)。是否确实要3?您是否考虑过边缘案例,例如您是否需要一个附件视图或一行上的删除按钮?@Maarten这些案例我不感兴趣(甚至滚动也不感兴趣)。无论如何,附件视图或删除按钮不应该是一个问题。