如何解决如何在Tableview的三列中放置文本
我有一个表格视图,在其中添加了一个文本字符串(三个Nsstring)。
因为三个文本字符串的长度相似,所以我想知道是否有一种简单的方法来使用简单的stringWithFormat
[Nsstring stringWithFormat:@"%@ %@ %@",hours,days,months];
我尝试过\ t,但这不是最好的,想知道它在不同平台上如何工作。我已经将iPhone的字体缩小了。
想
3 5 1
12 6 7
2 30 12
解决方法
我会在每个单元格中使用UIStackView
。
self.data = @[@[@"3",@"5",@"1"],@[@"12",@"6",@"7"],@[@"2",@"30",@"12"]];
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier: @"test" forIndexPath:indexPath];
UILabel *label1 = [UILabel new];
label1.text = self.data[indexPath.row][0];
label1.textAlignment = NSTextAlignmentCenter;
UILabel *label2 = [UILabel new];
label2.text = self.data[indexPath.row][1];
label2.textAlignment = NSTextAlignmentCenter;
UILabel *label3 = [UILabel new];
label3.text = self.data[indexPath.row][2];
label3.textAlignment = NSTextAlignmentCenter;
UIStackView *stackView = [[UIStackView alloc] initWithArrangedSubviews: @[label1,label2,label3]];
stackView.tag = 1;
stackView.axis = UILayoutConstraintAxisHorizontal;
stackView.distribution = UIStackViewDistributionFillEqually;
UIView *sub = [cell.contentView viewWithTag: 1];
if (sub != nil ) {
[sub removeFromSuperview];
}
[cell.contentView addSubview: stackView];
stackView.translatesAutoresizingMaskIntoConstraints = NO;
[stackView.centerYAnchor constraintEqualToAnchor: cell.contentView.centerYAnchor].active = YES;
[stackView.leadingAnchor constraintEqualToAnchor: cell.contentView.leadingAnchor constant: 10].active = YES;
[stackView.trailingAnchor constraintEqualToAnchor: cell.contentView.trailingAnchor constant: -10].active = YES;
return cell;
}
编辑:向堆栈视图添加了一个标记,以防止重复使用的单元具有多个堆栈视图。
结果:
,列不必是UI元素。自iOS 7.0起,可以使用属性字符串解决此问题
NSArray *tabs = @[
[[NSTextTab alloc] initWithTextAlignment:NSTextAlignmentLeft location:72.0 options:@{}],[[NSTextTab alloc] initWithTextAlignment:NSTextAlignmentLeft location:144.0 options:@{}]
];
NSMutableParagraphStyle *style = [[NSParagraphStyle defaultParagraphStyle] mutableCopy];
style.defaultTabInterval = 72.0;
style.tabStops = tabs;
NSDictionary *attr = @{ NSFontAttributeName:[UIFont systemFontOfSize:18.0],NSParagraphStyleAttributeName:style };
NSString *hh = @"2";
NSString *dd = @"30";
NSString *mm = @"12";
NSAttributedString *tabbedString = [[NSAttributedString alloc] initWithString:[NSString stringWithFormat:@"%@\t%@\t%@",hh,dd,mm] attributes:attr];
但是请注意,当制表符之间的间距不能完全显示其部分字体时,制表符可以改变字符串的布局。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。