-1

ジャイロスコープを使用して回転を処理しています。iPad を回転させる角度ごとに、画面上の画像を再描画してマスクの高さを変更する必要があります。

ただし、再描画するとジャイロスコープが停止します。

この状況のた​​めに何ができますか?

エディットコード追加

- (UIImage *)reflectedImage:(UIImageView *)fromImage withHeight:(NSUInteger)height
{
CGImageRef gradientMaskImage = CreateGradientImage(1, height);

CGImageRef masked = CGImageCreateWithMask([fromImage.image CGImage], gradientMaskImage);
CGImageRelease(gradientMaskImage);

UIImage *theImage = [UIImage imageWithCGImage:masked];

return theImage;
}

ジャイロスコープから値が得られるので、画像の高さを計算します。その後、この関数を呼び出してマスクと画像を再描画します。そのため、デバイスを回転させると、画像がブラインドアップまたはブラインドダウンします.

4

1 に答える 1

1

バックグラウンド スレッドで画像を再描画できます。イメージの準備ができたら、メイン スレッドで UI を更新します。

static dispatch_queue_t background_queue;
- (void)updateImage {
  if (background_queue == nil){
        background_queue = dispatch_queue_create("com.myappname.myIdentifier", 0);
  }

  dispatch_async(background_queue, ^ {  // render the image in the background thread
     UIImage * theImage = [self reflectedImage:fromImage withHeight:height]; 
     dispatch_sync(dispatch_get_main_queue(), ^{
        imageView.image = theImage;    // Update the imageview in the main thread
     });
  });
}

編集:コード修正

于 2011-12-20T20:06:03.977 に答える