微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在Tableview的三列中放置文本

如何解决如何在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;
}

编辑:向堆栈视图添加了一个标记,以防止重复使用的单元具有多个堆栈视图。

结果:

enter image description here

,

列不必是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 举报,一经查实,本站将立刻删除。