当我通过故事板尝试约束时,它完美地工作。
这是我的视图控制器。
当我尝试使用视觉约束时,我会看到这样的屏幕。
这是我的视觉约束:
NSDictionary *viewsdictionary=@{@"txtview":cell.txtview,
@"lbldate":cell.lbldate};
[cell.contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-[txtview]-|" options:0 metrics:nil views:viewsdictionary]];
[cell.contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-[lbldate]-|" options:0 metrics:nil views:viewsdictionary]];
[cell.contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-[txtview]-10-[lbldate(200@1000)]-|" options:0 metrics:nil views:viewsdictionary]];
if([from isEqualToString:_tophonenumber])
{
cell.txtview.layer.borderWidth=2.0;
cell.txtview.layer.borderColor=[UIColor yellowColor].CGColor;
[cell.contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-[lbldate]-10-[txtview]-|" options:0 metrics:nil views:viewsdictionary]];
}
-(void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:YES];
self.tableview.estimatedRowHeight = 160;
self.tableview.rowHeight = UITableViewAutomaticDimension;
}
由于某些原因我正在改变txtview和标签,但那也没有改变我做错了什么?
帮助我解决这个问题,谢谢:)
答案 0 :(得分:0)
在你的IB约束中,我假设你的日期有一个固定的宽度,而你的文本框有一个可变的宽度,只是被要求坚持日期前沿,日期只从后缘粘附到superview尾随?在程序化约束中,除非满足字符串if语句,否则不会将该日期赋予固定宽度,对吧?否则,日期没有得到它所需的限制。
另外,在更新约束后,您是否调用[cell layoutIfNeeded]?如果更新cellForRowAtIndexPath上的约束,他们可能也需要它。这也是你可能需要对UITableView做的最后一件事,以便更新表:
[self.tableView beginUpdates];
[self.tableView endUpdates];
如果在更新单元格约束后调用它,则可确保正确地重新对齐tableview单元格(特别是如果高度已更改)。但是我不会在每个单元格发生变化后调用它 - 在tableview完成更新时执行一次。