Como posso rodar um UIImageView por 20 graus?
-
21-08-2019 - |
Pergunta
O que eu tenho que fazer, se eu precisar rodar uma UIImageView
? Eu tenho um UIImage
que quero rodar 20 graus.
Os docs da Apple falar sobre uma matriz de transformação, mas que soa difícil. Há algum método votos ou funções para conseguir isso?
Solução
Uma matriz de transformação não é incrivelmente difícil. É muito simples, se você usar as funções fornecidas:
imgView.transform = CGAffineTransformMakeRotation(.34906585);
(. 34906585 é de 20 graus em radianos)
Outras dicas
Se você quiser virar à direita, o valor deve ser maior que 0 se você deseja girar à esquerda indica o valor com o sinal "-". Por exemplo -20.
CGFloat degrees = 20.0f; //the value in degrees
CGFloat radians = degrees * M_PI/180;
imageView.transform = CGAffineTransformMakeRotation(radians);
Swift 4:
let degrees: CGFloat = 20.0 //the value in degrees
let radians: CGFloat = degrees * (.pi / 180)
imageView.transform = CGAffineTransform(rotationAngle: radians)
versão Swift:
let degrees:CGFloat = 20
myImageView.transform = CGAffineTransformMakeRotation(degrees * CGFloat(M_PI/180) )
Swift 4.0
imageView.transform = CGAffineTransform(rotationAngle: CGFloat(20.0 * Double.pi / 180))
Aqui está uma extensão para o Swift 3.
extension UIImageView {
func rotate(degrees:CGFloat){
self.transform = CGAffineTransform(rotationAngle: degrees * CGFloat(M_PI/180))
}
}
Uso:
myImageView.rotate(degrees: 20)
_YourImageView.transform = CGAffineTransformMakeRotation(1.57);
onde 1,57 é o valor radiano para 90 graus
Este é um exemplo mais fácil de formatar (para 20 graus):
CGAffineTransform(rotationAngle: ((20.0 * CGFloat(M_PI)) / 180.0))
Tanto quanto eu sei, usando a matriz em UIAffineTransform
é a única maneira de conseguir uma rotação sem a ajuda de um quadro de terceiros.