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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top