使用渐变掩码重绘图像时IOS上的性能问题

时间:2011-12-20 00:33:49

标签: ios core-graphics gradient gyroscope

我正在使用陀螺仪来处理旋转。对于我旋转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;
}

陀螺仪会给我一个值,我计算出图像的高度。之后我调用此函数重绘蒙版和图像。因此,如果我滚动设备,图像会失明或失明。

1 个答案:

答案 0 :(得分: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
     });
  });
}

编辑:代码修复