2016-12-16 48 views
1

我有一個小問題,希望有人可以幫我解決它...我搜索了網絡,並做了一些嘗試,但我無法解決我的問題。For循環中的約束間隔UILabel

我創建了一個FOR循環播放通過陣列獲得標籤指定數量的,因爲你可以從我貼在下面的代碼中看到...

現在我的問題是如何以編程方式插入約束。我需要在一個標籤和另一個(水平)之間有一個特定的空間。

例子:

如果我標籤4,我想周圍的橫向空間是在iPhone上顯示SE兩種iPhone 7加上這些將採取..

所以我的問題是如何設置一個特定的每個標籤之間有空格並傳入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; 
} 
+0

什麼是「ripercuoterlo」? – danh

+0

翻譯員做錯了..對不起ripercuoterlo =通過 – kAiN

+0

我們可以做簡單的算術佈局嗎?自動功能的代碼要複雜得多,但可以通過旋轉等工作來工作 – danh

回答

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]; 

剛剛瞭解了這個自己,但我試過這段代碼,它很好地工作。