2015-11-16 3 views
3

Как я могу создать 5 пользовательских uilabel внутри пользовательского UIView. Который выровнятся один за другим. Я попытался создать UILabel внутри пользовательского UIView. но он не входит в обычай UIView.Как программно создать UIlabel внутри пользовательского uiView swift

// обновляется с петлей

import UIKit 

class ViewController: UIViewController { 

@IBOutlet weak var mainView: UIView! 
override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 

    var getMainViewX = mainView.frame.origin.x 
    let getMainViewY = mainView.frame.origin.y 

    for var i = 0; i < 5; i++ 
    { 

     let label = UILabel(frame: CGRectMake(getMainViewX, getMainViewY, 200, 21)) 
     //label.center = CGPointMake(160, 284) 
     label.textAlignment = NSTextAlignment.Center 
     label.text = "I'am a test label" 
     self.mainView.addSubview(label) 
     getMainViewX+=20 
    } 

} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 


} 

the light gray box in the middle is the uiview

+0

Выполнить петлю 5 делает то же самое. Увеличение вашего getMainViewY на um позволяет сказать 20 с каждым счетчиком циклов. – NSNoob

+0

Как я могу получить uilabel, выровненный внутри пользовательского uiview –

+0

Поделитесь кодом того, как вы добавляете свой собственный вид View to Viewcontroller. – NSNoob

ответ

1

Если вы используете IOS 9, недавно добавленный Stack View был создан именно для этой цели.

  1. Используйте UIStackView для mainView вместо обзора по умолчанию
  2. Вы можете установить свойства выравнивания представления стека в Interface Builder
  3. Создание этикетки в цикле, а затем добавить их в представление стеки с использованием метода представления стека addArrangedSubview.

Вид стека позаботится о выравнивании, расстоянии и расположении его подзонов для вас.

+0

работал как магия, просто решение, которое я искал –

1

Непонятно, что вы подразумеваете под "align". Предполагая, что вы хотите, чтобы они были уложены друг под друга, я внес небольшие корректировки в ваш код.

class ViewController: UIViewController { 

@IBOutlet weak var mainView: UIView! 

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 

    let getMainViewX = mainView.frame.origin.x 
    //let getMainViewY = mainView.frame.origin.y 

    for var i = 0; i < 5; i++ 
    { 
     //let label = UILabel(frame: CGRectMake(getMainViewX, getMainViewY, 200, 21)) 
     let label = UILabel(frame: CGRectMake(getMainViewX, CGFloat(i) * 21, 200, 21)) 
     //label.center = CGPointMake(160, 284) 
     label.textAlignment = NSTextAlignment.Center 
     label.text = "I'am a test label" 
     self.mainView.addSubview(label) 
     //getMainViewX+=20 
    } 

} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 

}

Hopefully this is how you are looking to align the labels

Смежные вопросы