2015-02-25 10 views

Odpowiedz

138

kładę moją odpowiedź w podobnym formacie this answer.

Oto oryginalna etykieta:

enter image description here

Obrót o 90 stopni w kierunku ruchu wskazówek zegara:

yourLabelName.transform = CGAffineTransform(rotationAngle: CGFloat.pi/2) 

enter image description here

Obrót o 180 stopni:

yourLabelName.transform = CGAffineTransform(rotationAngle: CGFloat.pi) 

enter image description here

Obrót 90 stopni w lewo:

yourLabelName.transform = CGAffineTransform(rotationAngle: -CGFloat.pi/2) 

enter image description here

Czy to samo obracanie przycisku. Na szczęście wydarzenia dotykowe również zostają obrócone, więc przycisk wciąż można klikać w nowe granice bez konieczności wykonywania dodatkowych czynności.

yourButtonName.transform = CGAffineTransform(rotationAngle: CGFloat.pi/2) 

Uwagi:

Dokumentacja dla CGAffineTransform

Format podstawowy jest CGAffineTransform(rotationAngle: CGFloat) gdzie rotationAngle jest w radianach, a nie stopni.

Istnieją 2π radianów w pełnym kole (360 stopni). Swift zawiera użyteczną stałą CGFloat.pi.

  • CGFloat.pi = gatunku = 180 stopni
  • CGFloat.pi/2 = p/2 = 90 stopni

Auto Layout:

Auto układ nie działa z obróconych widokami. (Aby uzyskać wyjaśnienie przyczyn, patrz: Frame vs Bounds). Ten problem można rozwiązać, tworząc niestandardowy widok. This answer pokazuje, jak to zrobić dla UITextView, ale jest to ta sama podstawowa koncepcja etykiety lub przycisku. (Zauważ, że będziesz musiał usunąć linię CGAffineTransformScale w tej odpowiedzi, ponieważ nie ma potrzeby odzwierciedlania tekstu.)

Podobne

+0

zrobiłem to samo dla mojego imageview.But mój obraz skalowany uzyskiwanie (małe lub duże) .jak zrobić dla imageviews ..? – Madhumitha

6

szybkimi

Obrót o 90 stopni w prawo:

var rotateLabel: UILabel = UILabel(frame: CGRectMake(100, 0, 28, 159)) 

    rotateLabel.textAlignment = .Right 

    rotateLabel.text = "Hello!" 

    self.view.addSubview(rotateLabel) 

    rotateLabel.transform = CGAffineTransformMakeRotation(CGFloat(M_PI_2)) 

    rotateLabel.frame = CGRectMake(100, 0, 28, 159) 

Obrót o 90 stopni w kierunku przeciwnym:

var rotateLabel: UILabel = UILabel(frame: CGRectMake(100, 0, 28, 159)) 

    rotateLabel.textAlignment = .Right 

    rotateLabel.text = "Hello!" 

    self.view.addSubview(rotateLabel) 

    rotateLabel.transform = CGAffineTransformMakeRotation(CGFloat(-M_PI_2)) 

    rotateLabel.frame = CGRectMake(100, 0, 28, 159) 
0

przystosowany odpowiedzi z Ananthu R Krishnan, aby pasowały do ​​Swift 3.1.

Obrót 90 stopni w lewo:

let rotateLabel: UILabel = UILabel(frame: CGRect(x:15, y:66, width:28, height:159)) 
rotateLabel.textAlignment = .right 
rotateLabel.text = "TEXT" 
self.view.addSubview(rotateLabel) 
rotateLabel.transform = CGAffineTransform(rotationAngle: CGFloat(-(Double.pi/2.0))) 
rotateLabel.frame = CGRect(x:15, y:66, width:28, height:159)