2016-08-19 29 views
10

Jak obracać Uibutton o 90 stopni za każdym kliknięciem przycisku, a także śledzić każde obrócone położenie/kąt?Obracanie UIButton o 90 stopni za każdym naciśnięciem przycisku

Oto kod mam tak daleko, ale to tylko obraca się raz:

@IBAction func gameButton(sender: AnyObject) { 
    UIView.animateWithDuration(0.05, animations: ({ 
     self.gameButtonLabel.transform = CGAffineTransformMakeRotation(CGFloat(M_PI_2)) 
    })) 
} 

Odpowiedz

12
self.gameButtonLabel.transform = CGAffineTransformMakeRotation(CGFloat(M_PI_2)) 

należy zmienić

// Swift 3 - Rotate the current transform by 90 degrees. 
self.gameButtonLabel.transform = self.gameButtonLabel.transform.rotated(by: CGFloat(M_PI_2)) 

// OR 

// Swift 2.2+ - Pass the current transform into the method so it will rotate it an extra 90 degrees. 
self.gameButtonLabel.transform = CGAffineTransformRotate(self.gameButtonLabel.transform, CGFloat(M_PI_2)) 

Z CGAffineTransformMake..., należy utworzyć nowy transformacji i nadpisać każda transformacja, która była już na przycisku. Ponieważ chcesz dołączyć 90 stopni do transformacji, która już istnieje (która może być już 0, 90, itp. Stopni obróconych), musisz dodać do obecnej transformacji. Druga linia kodu, którą dałem, zrobi to.

+0

Wersja Swift 3 daje błąd: wartość typu 'CGAffineTransform' nie ma elementu 'obrócony' I wersji Swift 2.2+ daje błąd: Dodatkowy argument zadzwoń pod numer – nodyor90z

+0

Hmmm. W której wersji Xcode jesteś? Nadal zmieniają wszystkie nazwy metod na mnie. Wydaje mi się, że opublikowany przeze mnie kod pochodzi z Xcode 8 beta 5. – keithbhunter

+0

Nie uaktualniłem jeszcze wersji beta do Xcode 8. Obecnie korzystam z Xcode 7.3.1, ale wciąż otrzymuję sugestie samokorekcji Swift 3 z Xcode podczas pisania mojego kodu. – nodyor90z

0

Swift 4:

@IBOutlet weak var expandButton: UIButton! 

var sectionIsExpanded: Bool = true { 
    didSet { 
     UIView.animate(withDuration: 0.25) { 
      if self.sectionIsExpanded { 
       self.expandButton.transform = CGAffineTransform.identity 
      } else { 
       self.expandButton.transform = CGAffineTransform(rotationAngle: -CGFloat.pi/2.0) 
      } 
     } 
    } 
} 

@IBAction func expandButtonTapped(_ sender: UIButton) { 
    sectionIsExpanded = !sectionIsExpanded 
} 
Powiązane problemy