2016-08-19 46 views
10

Düğme tıklatıldığında her UIButton'u 90 derece döndürür ve her döndürülen konum/açı takibi nasıl yapılır? İşte Düğmeye her tıklandığında UIButton'u 90 derece döndürme

var bugüne kadar kodudur ancak yalnızca bir kez döner:

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

cevap

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

CGAffineTransformMake... ile

// 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)) 

değiştirildi halinde, size dönüşümü yeni bir marka oluşturmak ve üzerine Butonda zaten olan herhangi bir dönüşüm. Halihazırda mevcut olan (zaten 0, 90, vs derece döndürülebilir) dönüşüme 90 derece eklemek istediğinizden, mevcut dönüşüme eklemeniz gerekir. Verdiğim ikinci kod satırı bunu yapacak.

+0

Swift 3 sürümü hata vermek: Çeşidi Değerini 'CGAffineTransform' hayır VE Swift 2.2+ sürümü hata vermek 'döndürülmüş' üyesi var: Ekstra argüman içinde – nodyor90z

+0

Hmmm'yi arayın. Hangi Xcode beta üzerindesiniz? Bana tüm yöntem isimlerini değiştirmeye devam ediyorlar. Gönderdiğim kodun Xcode 8 beta 5 olduğunu düşünüyorum. – keithbhunter

+0

Henüz Xcode 8 beta sürümüne yükseltme yapmadım. Şu anda Xcode 7.3.1 kullanıyorum ama kodumu yazarken hala Xcode'tan Swift 3 otomatik düzeltme önerileri alıyorum. – 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 
}