Search code examples
swiftxcodelayouttransitionauto

Edit- how can I get UIlabel to get in the middle of the container?


how can i get UIlabel to get in the middle of the container? and that text and view disappear equally and come to the next view.

EDIT: This code is working fine for me now

class TestViewController: UIViewController {

let container = UIView()
let redSquare = UIView()
let blueSquare = UIView()
let label = UILabel()


override func viewDidLoad() {
    super.viewDidLoad()


    self.label.textColor = UIColor.orange

    self.label.font = label.font.withSize(25)
    self.label.numberOfLines = 0

    self.label.center = self.blueSquare.center

    self.label.textAlignment = NSTextAlignment.center

    self.label.text =

    "sosdihfiosdfhsdhfdisfhsdfhdsoifhsdofhsdifhdsofhdsofhsdohdsfdosdohdfh"


    self.blueSquare.addSubview(label)

    self.label.frame = CGRect(x: 45, y: 120, width: 300, height: 100)

    self.container.frame = CGRect(x: 7, y: 200, width: 400, height: 500)
    self.view.addSubview(container)
    self.redSquare.frame = CGRect(x: 0, y: 0, width: 400, height: 500)
    self.blueSquare.frame = redSquare.frame

    self.redSquare.backgroundColor = UIColor.darkGray
    self.blueSquare.backgroundColor = UIColor.darkGray
    self.container.addSubview(self.redSquare)
}

Solution

  • Define two labels like:

    let label = UILabel(frame: CGRect(x: 0, y: 0, width: 200, height: 30))
    let label2 = UILabel(frame: CGRect(x: 0, y: 0, width: 200, height: 30))
    

    then inside viewDidLoad() before adding redSquare to container fix some labels's property and add label's to blue and red square:

    label.center = self.redSquare.center
    label.textAlignment = NSTextAlignment.center
    label.text = "same text"
    
    label2.textAlignment = NSTextAlignment.center
    label2.center = self.blueSquare.center
    label2.text = "same text"
    
    self.blueSquare.addSubview(label2)
    self.redSquare.addSubview(label)