Pergunta

Eu estou tentando mover algum código desenho personalizado de uma vista em uma CAShapeLayer, que, em seguida, são adicionados como uma subcamada para CALayer da exibição original. Isto também funciona bem, mas durante a rotação do dispositivo, a animação começa a gaguez, v.g. você acabou de ver o quadro na orientação do original e, em seguida, a orientação final, com no máximo um quadro no meio - não suavizar a todos. Slide-in e slide-out animações do UIViewController correspondente são um pouco jerky, também (mas não muito).

Todo o CAShapeLayer tem em seu path é um CGPathAddRect, ele é definido para ser opaque, sua opacity é 1.0f eo fillColor está definida para azul opaco.

Ao desenhar o caminho diretamente no método vistas drawRect, no entanto, a animação é suavizar. Então eu acho que tem algo a ver com o CAShapeLayer sendo animado durante a rotação.

Você poderia me dizer como quer se livrar daqueles jerkiness ou apenas esconder o CAShapeLayer quando anima? Voltando para apenas desenhar CGPaths diretamente não é uma opção para mim porque eu confiar na capacidade de CAShapeLayer para animar seu caminho (não é animado em minhas tentativas com rotação a vista).

/ actualização:. Isto também acontece quando os UIViewControllers rotativas ver contém uma vista com uma subclasse de CAGradientLayer como sua layerClass (ver, por exemplo, uma camada com um gradiente como fundo)

Felicidades

MrMage

Foi útil?

Solução 2

Parece que este problema foi corrigido pela Apple no iOS 4.

Outras dicas

Bem, há um hide propriedade, você poderia esconder o CAShapeLayer em seguida, fazer a animação. Em seguida, chamar um método que un-esconde o CAShapeLayer de modo que você não vê-lo enquanto ele está girando e então ele deve ser suave

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