2

drawFrame をすべてのフレームで呼び出す必要がある次のコードがありますが、そうではありません。

- (void)viewDidLoad
{
    [super viewDidLoad];
    displayLink = [viewReference.window.screen displayLinkWithTarget:(self) selector:@selector(drawFrame)];
    [displayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
}


- (void) drawFrame:(CADisplayLink*)sender
{
    thel.text = @"test";
}

dispayLink は CADisplayLink へのポインタです。それらは私のビューのラベルに接続されています。このビューは、viewReference に接続されています。self は ViewController です。drawFrame が宣言されている

- (void) drawFrame:(CADisplayLink*)sender;

l.text は、viewDidLoad でテストするときに設定できます。

drawFrame が呼び出されないようです。このアプリケーションは、カスタム ストーリーボード ファイルを含む Xcode 4.2 の空のアプリケーション テンプレートに基づいています (作成時にストーリーボードの使用を選択するのではなく、後で追加しました)。ビューコントローラー、ビュー、ラベル以外は空です。

私はこれが初めてです。[[NSRunLoop currentRunLoop] run] を呼び出すと、iOS 5.0 シミュレーターにアプリがまったく表示されません。いずれにせよ、 currentRunLoop はデフォルトのメイン runLoop である必要があります。

4

1 に答える 1

2

おそらく、CADisplaylink の「frameInterval」プロパティを設定する必要があります。

displayLink.frameInterval = someRate (1-60);

もう一つの興味深い好奇心は、

weak private var _anim : CADisplayLink? // mysteriously does nothing

理由は不明ですが、変数が弱い場合はリンクを表示しないでください。

private var _anim : CADisplayLink? // rock on
于 2012-01-21T18:55:45.910 に答える