For循环中的约束间距UILabel

时间:2016-12-16 20:23:39

标签: objective-c uilabel

我有一个小问题,希望有人可以帮我解决...我搜索网并做了一些尝试,但我无法解决我的问题。

我创建了一个FOR循环,播放通过数组获得的指定数量的标签,正如您在下面发布的代码中所看到的那样......

现在我的问题是如何以编程方式插入约束。我需要在标签和另一个(水平)之间有一个特定的空间。

示例:

如果我标签4我希望这些可以带走水平空间的iPhone显示器SE都是iPhone 7 Plus ..

所以我的问题是如何在每个标签之间设置一个特定的空格并传入FOR循环?

CGFloat padding = 0;

NSMutableArray *array = [[NSMutableArray alloc] initWithObjects:@"INFO UNIVERSITARIE",@"INFO GENERALI", @"TROVA SEDI", nil];

for (NSInteger i = 0;  i < array.count; i ++) {

    NSString *valueText = [array objectAtIndex:i];

    UILabel *label  = [[UILabel alloc] init];
    label.frame = CGRectMake(padding *i, 0, 50, 30);
    label.text = [NSString stringWithFormat:@"%@", valueText];
    label.textColor = [UIColor whiteColor];
    label.font = [UIFont fontWithName:@"HelveticaNeue" size:12];
    [label sizeToFit];

    [_baseView addSubview:label];

    padding = label.frame.size.width;

    label.translatesAutoresizingMaskIntoConstraints = NO;
}

1 个答案:

答案 0 :(得分:0)

研究这一点,我记得UIStackView是我们的新朋友,专门针对这个问题而设计。

    NSArray *array = @[ @"INFO UNIVERSITARIE",@"INFO GENERALI", @"TROVA SEDI" ];
    NSMutableArray *labels = [NSMutableArray array];

    for (NSString *string in array) {
        UILabel *label = [[UILabel alloc] init];
        label.text = string;
        [labels addObject:label];
    }

    UIStackView *stackView = [[UIStackView alloc] initWithArrangedSubviews:labels];
    stackView.axis = UILayoutConstraintAxisHorizontal;
    stackView.spacing = 12.0;
    stackView.frame = self.view.bounds;
    [self.view addSubview:stackView];

我自己刚刚了解了这一点,但我尝试了这段代码并且效果很好。