2016-08-19 2 views
10

Как вы поворачиваете UIButton на 90 градусов при каждом нажатии кнопки, а также отслеживаете каждое повернутое положение/угол?Вращение UIButton на 90 градусов при каждом нажатии кнопки

Вот код, который я до сих пор, но она вращается только один раз:

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

ответ

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

Должен быть изменен на

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

С CGAffineTransformMake..., вы создаете совершенно новый преобразования и перезаписать любое преобразование, которое уже было на кнопке. Так как вы хотите добавить 90 градусов к уже существующему преобразованию (которое может быть уже повернуто на 0, 90 и т. Д.), Вам нужно добавить к текущему преобразованию. Вторая строка кода, которую я дал, сделает это.

+0

версия Swift 3 выдаст ошибку: Значение типа 'CGAffineTransform' не имеет элемента 'повернута' И версия Swift 2.2+ дает ошибку: дополнительный аргумент в звоните – nodyor90z

+0

Хммм. Какая Xcode-бета вы используете? Они меняют все имена методов. Я думаю, что код, который я опубликовал, от Xcode 8 beta 5. – keithbhunter

+0

Я пока не обновляю до Xcode 8 beta. В настоящее время я использую Xcode 7.3.1, но я все еще получаю предложения по автоматической коррекции Swift 3 от Xcode, когда я пишу свой код. – nodyor90z

0

Свифт 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 
} 
Смежные вопросы