2009-05-21 10 views
3

im Grunde habe ich dieseslöschen und neu zeichnen mit Cappuccino (Objective-J)

@implementation MyView : CPView 
{ 
    CPArray MyPanelArray; 
} 

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

MyPanels ziemlich Wrapper sind für Bilder. Wenn alles initialisiert ist, ist es gut. Dann habe ich einen Schieberegler die Position der Bilder und den einzigen Weg, ich weiß, zu manipulieren, wie alles neu zu zeichnen ist die MyView mit einer neuen Instanz und in der Hauptcontent etwas tun, wie

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

zu überschreiben Es funktioniert alles in Ordnung , aber ich bezweifle, dass das der "richtige Weg" ist.

* Ich weiß, dass ich eine CPCollectionView für eine grundlegende Einrichtung verwenden kann, aber es wird nicht funktionieren für das, was ich versuche zu erreichen.

Vielen Dank im Voraus.

Antwort

5

Mit "redraw" meinst du eigentlich eine drawRect zu machen: oder einfach die Bildansichten verschieben/skalieren? Wenn es das letztere ist, dann können Sie setFrame aufrufen: auf _myView.

+0

Wow! Du bist es, Francisco. Cool. Hm ja. Einfacher ist das Problem, dass ich versuche, den Coverflow-Effekt neu zu erstellen. Ich stelle den Schieberegler ein und ich brauche alle Bilder, um die Position zu ändern und/oder durch eine affine Transformation geschert zu werden. Ich habe nicht damit begonnen, es zu animieren, sondern einfach zu neuen Positionen zu springen. Wenn der Schieberegler angepasst wurde, würde er alles neu positionieren und über dem alten Zustand neu zeichnen, bevor ich die replaceSubview ausprobieren würde: with :. – Felix

+0

Sie sollten mich im IRC (#cappuccino auf freenode) finden, damit wir den Code ein wenig zusammenhacken können und ich kann sehen, was in mehr Kontext vor sich geht, dann können wir die Lösung hier zurück posten. Ich kann Ihnen sagen, dass Sie, wenn Sie eine affine Transformation anwenden möchten, irgendwann CALayers verwenden möchten (die Transformationen verarbeiten sollen) –