2016-01-15 7 views
0

Я хочу нажать кнопку и повернуть ее изображение с помощью анимации. После завершения анимации я хочу установить новое повернутое изображение на кнопку. Однако по какой-либо причине повернутое изображение не настроено на кнопку для нормального состояния. Он установлен на выделенное состояние. У меня есть логическое значение isPriceOrdered, в соответствии с этим значением bool я устанавливаю стрелку вверх или вниз. Вот код:swift, поворот изображения и установка поворота изображения на uibutton

UIView.animateWithDuration(0.3, animations: { 
      self.buttonimage.imageView!.transform = CGAffineTransformMakeRotation(CGFloat(M_PI)) 
     }, completion: { 
      (success) in 
      if self.isPriceOrderAsc == true { 
       self.isPriceOrderAsc = false 
       let rotatedimage = UIImage(CGImage: (self.buttonimage.imageView!.image!.CGImage)!, scale: CGFloat(1.0), orientation: UIImageOrientation.DownMirrored) 

       self.buttonimage.setImage(rotatedimage, forState: .Normal) 


      }else{ 
       self.isPriceOrderAsc = true 
       let rotatedimage = UIImage(CGImage: (self.buttonimage.imageView?.image!.CGImage)!, scale: CGFloat(1.0), orientation: UIImageOrientation.UpMirrored) 

       self.buttonimage.setImage(rotatedimage, forState: .Normal) 
      } 
    }) 

ответ

1

Проблема была в том, что я не сохранил исходное преобразование кнопки перед преобразованием изображения. Перед преобразованием степени изображения сохраните исходное изображение преобразования. Вот код:

var originalTransform: CGAffineTransform? 

UIView.animateWithDuration(0.3, animations: { 

      if self.buttonPriceOrder.imageView != nil { 
       originalTransform = self.buttonPriceOrder.imageView!.transform 
       self.buttonPriceOrder.imageView!.transform = CGAffineTransformMakeRotation(CGFloat(M_PI)) 
      } 

     }, completion: { 
      (success) in 

      if success { 

       self.buttonPriceOrder.imageView?.transform = originalTransform! 

       if self.isPriceOrderAsc == true { 
        self.isPriceOrderAsc = false 
        let rotatedimage = UIImage(CGImage: (self.buttonPriceOrder.imageView!.image!.CGImage)!, scale: CGFloat(1.0), orientation: UIImageOrientation.DownMirrored) 
        self.buttonPriceOrder.setImage(rotatedimage, forState: .Normal) 

       }else{ 
        self.isPriceOrderAsc = true 
        let rotatedimage = UIImage(CGImage: (self.buttonPriceOrder.imageView?.image!.CGImage)!, scale: CGFloat(1.0), orientation: UIImageOrientation.UpMirrored) 
        self.buttonPriceOrder.imageView?.image = nil 
        self.buttonPriceOrder.setImage(rotatedimage, forState: .Normal) 

       } 
       self.isFilterActive = true 
       self.delegate.filterUpdated(self) 
      } 

    }) 

После того, как изображение повернулось перед настройкой этого изображения на кнопку, установите кнопку трансформации в исходную.

Смежные вопросы