2009-07-29 7 views
3

J'ai une démo de CA très simple. Il crée une couche avec le contenu d'un fichier image et affiche cette image. Lorsque vous cliquez dans la fenêtre, il utilise une animation implicite pour déplacer doucement l'image vers le point de la souris. Cela fonctionne bien, fonctionne avec une douceur parfaite. Mais, à mesure que la fenêtre s'agrandit, la douceur diminue. C'est acceptable en dessous d'environ 75% de la taille de l'écran. Avec une fenêtre agrandie, ou en mode plein écran, il est très rugueux et saccadé. J'utilise OSX 10.5.7 sur un Mac Mini intel. Il dispose d'un GPU Intel GMA950. Mon écran est 1920 x 1200.CoreAnimation saccadé avec grande fenêtre

Je n'ai pas de méthode drawRect du tout. Tout se passe en définissant la propriété position du CALayer, en utilisant une animation implicite.

Ai-je raison de suspecter que le matériel est en faute ici?

Neil Baylis

Répondre

0

Votre matériel est très bien et capable - la mise en œuvre manque.

Vous n'êtes pas autorisé à animer ou même à toucher la propriété Position. Cette propriété est gérée par la vue si la couche est sauvegardée. Pas toi. Et recalculé à plusieurs reprises. Donc, si vous commencez à animer et à changer cette propriété, il y aura des problèmes. Au moins selon Apple ...

Voici un extrait

Selon Apple -> Pour animer des modifications à une vue soutenue couche dans OS X, il est préférable d'utiliser les interfaces de la vue elle-même. Vous devez rarement, voire jamais, modifier directement la couche attachée à l'un de vos objets NSView avec couche. AppKit est responsable de la création et de la configuration de ces objets de calque et de leur gestion pendant l'exécution de votre application. La modification de la couche peut entraîner une désynchronisation avec l'objet de vue et entraîner des résultats inattendus. Pour les vues soutenu par couche, votre code ne doit absolument pas modifier les propriétés suivantes de l'objet de la couche: • Anchorpoint • bornes • compositingFilter • Filtres • Cadre • geometryFlipped • caché • Position • shadowColor • shadowOffset • ombreOpacité • ombreRadius • transformer

Questions connexes