3

基本的に私はこれを持っています

@implementation MyView : CPView
{
  CPArray MyPanelArray;
}

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

MyPanels は、画像のほとんどのラッパーです。すべてが初期化されると、うまく描画されます。次に、画像の位置を操作するスライダーがあり、すべてを再描画する方法を知っている唯一の方法は、MyView を新しいインスタンスで上書きし、メインの contentView で次のようなことを行うことです

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

それは問題なく機能しますが、それが「正しい方法」であるとは思えません。

* CPCollectionView を基本的な設定に使用できることはわかっていますが、目的の作業には使用できません。

前もって感謝します。

4

1 に答える 1

5

「再描画」とは、実際に drawRect: を実行すること、または画像ビューを移動/サイズ変更することを意味しますか? 後者の場合は、_myView で setFrame: を呼び出すだけです。

于 2009-05-21T17:52:56.277 に答える