2009-05-21 23 views
3

essentiellement Je possède ceclaire et Redessiner avec cappuccino (Objective-J)

@implementation MyView : CPView 
{ 
    CPArray MyPanelArray; 
} 

// Populate the MyPanelArray and position each panel 
- (void)initMyView 
{ 
    ... 
} 

MyPanels sont interfacées à peu près pour les images. Quand tout est initialisé, il dessine très bien. Ensuite, j'ai un curseur pour manipuler la position des images et la seule façon que je sais comment redessiner tout est de remplacer le MyView par une nouvelle instance et dans la principale contentView faire quelque chose comme

// Has the correct effect, but feels wrong 
- (void)sliderAction:(id)sender 
{ 
    var myNewView = [MyView initWithPositionValue:[sender value]]; 
    [_contentView replaceSubview:_myView with:myNewView]; 
    _myView = myNewView; 
} 

Il fonctionne bien , mais je doute que ce soit la "bonne façon".

* Je sais que je peux utiliser CPCollectionView pour une configuration de base, mais cela ne fonctionnera pas pour ce que j'essaie d'accomplir.

Merci d'avance.

Répondre

5

Par "redessiner" voulez-vous dire faire un drawRect: ou simplement déplacer/redimensionner les vues de l'image? Si c'est le dernier alors vous pouvez juste appeler setFrame: sur _myView.

+0

Wow! C'est toi, Francisco. Cool. Hum, ouais. Plus simplement, le problème est que j'essaie de recréer l'effet de couverture. Je règle le curseur et j'ai besoin de toutes les images pour changer de position et/ou être cisaillé par une transformation affine. Je n'ai pas commencé à l'animer, je suis simplement passé à de nouvelles positions. Lorsque le curseur était ajusté, il repositionnait tout et redessinait sur l'ancien état avant d'essayer le replaceSubview: avec :. – Felix

+0

Vous devriez me trouver sur IRC (#cappuccino sur freenode) afin que nous puissions pirater un peu le code et voir ce qui se passe dans un contexte plus précis, alors nous pourrons poster la solution ici. Je peux vous dire que si vous voulez appliquer une transformation affine, vous aurez besoin d'utiliser CALayers à un moment donné (qui sont conçus pour gérer les transformations) –

Questions connexes