2017-11-01 20 views
0

다음과 같이 레이블과 UIImage 레이아웃이 있습니다.
회전에서 TapGestureRecognizer로 UIImage를 처리하는 방법

LabelMonth ImgArrowDown

LabelMonth이 아래로 TapGestureRecognizer있다.

사용자가 LabelMonth를 탭하면 ImageArrowDown이 360을 회전하여 가리키는 것처럼 보입니다.

문제 : 사용자가 다시 LabelMonth을 탭하면, 방법을 아래로 가리키는에있는 화살표를 의미 원래의 위치로 ImageArrowDown을 다시 회전

  • ?

의 viewDidLoad() {당신의 문제를 해결해야

let tapGestureRecognizer = UITapGestureRecognizer(target:self, action: 
     #selector(HandleImgRotation)) 

    LabelMonth.isUserInteractionEnabled = true LabelMonth.addGestureRecognizer(tapGestureRecognizer) 

    } 




    func HandleImgRotation(_sender:AnyObject){ 

    UIView.animate(withDuration:1.0, animations: ({self.imgArrowDown.transform = CGAffineTransform(rotationAngle: self.radian(degree:360)) 
          })) 

    } 



    func radian(degrees:Double) -> CGFloat{ 

    return CGFloat(degrees * .pi/degrees) 

    } 

감사

답변

1

다음과 같은 방법을 ...

var rotated = false 

func HandleImgRotation() { 
     UIView.animate(withDuration: 2.0) { 
      if !self.rotated { 
       UIView.animate(withDuration:1.0, animations: ({ 
        ImgArrowDown.transform = CGAffineTransform(rotationAngle: CGFloat(M_PI * 0.999)) 
        self.rotated = true 
       })) 
      } else { 
       UIView.animate(withDuration:1.0, animations: ({ 
        ImgArrowDown.transform = CGAffineTransform.identity 
        self.rotated = false 
       })) 
      } 
     } 
    }