Melhorar a suavidade de animações simples
Pergunta
Estou desenvolvendo meu primeiro aplicativo para iPhone, e eu fiz-lo após a "máquina" e agora estou encerrando ajuste e acabamento detalhes.
Eu tenho uma visão que desliza da parte inferior da tela para o painel minha configurações. A visão em si tem uma opacidade de 0, e tem uma vista privilegiada UIImageView dele com um PNG criar o fundo real para a vista, atrás dos controles. Eu estou usando o construído em chamadas de animação para UIView, como em;
[self.view addSubview:settingsViewController.view];
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.5];
[UIView setAnimationCurve:UIViewAnimationCurveEaseOut];
frame.origin.y = 200.0;
settingsViewController.view.frame = frame;
[UIView commitAnimations];
Infelizmente, a animação no dispositivo é instável. O PNG Estou usando como meu fundo é transparente apenas nos mais altos 30 pixels em toda a sua largura. Se eu usar um PNG sem a transparência, a animação é suave.
A aplicação em si é altamente gráfica, para que a vista está animando para fora por cima de uma tela cheia de outros PNGs.
Eu seria extremamente surpreendido se o dispositivo não consegue lidar com este tipo de animação sem problemas, o que me leva a crer que eu preciso para refinar minha abordagem. Pensamentos que eu tive até agora incluem;
Talvez eu preciso usar Core Animation diretamente? Será que cache a vista atrás as configurações painel antes animadora ser benéfico de alguma forma?
Este é um território novo para mim, e eu sei que deve haver maneiras de otimizar que são consideradas boas práticas. Obrigado pelo seu tempo!
Solução
Ele não importará se você usar o Core Animation "diretamente" ou animar a propriedade centro: é irregular porque o hardware de gráficos tem de composto a imagem transparente com o fundo em cada quadro da animação. Você mesmo disse que o uso de um PNG completamente opaca faz a animação suave.
Tente executar o aplicativo sob Instruments, a ferramenta Core Animation tem algumas caixas que destacam áreas compostas em tempo real e que pode lhe dar algumas dicas sobre re-fazer o seu desenho.
Se apenas os top 30 pixels precisam ser transparentes, pode valer a pena a divisão do fundo em duas exibições, uma faixa de 30 pixels na parte superior (transparente) eo resto (opaco). Se for a composição de toda a visão cada quadro, que a mudança pode ser suficiente para deixá-lo saber que só tem de compostos apenas os 30 pixels no topo.
Outras dicas
Eu tive alguns problemas com animar a moldura no passado, tente animar a propriedade centro vez.
Além disso, o que você precisa a transparência na imagem de fundo para? não será possível para você usar apenas aquela imagem como fundo da vista conter e eliminar a necessidade do UIImageView?