CAShapeLayer desacelerando a rotação da interface
-
19-09-2019 - |
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 CGPath
s 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 UIViewController
s 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
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