我正在使用陀螺仪来处理旋转。对于我旋转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;
}
陀螺仪会给我一个值,我计算出图像的高度。之后我调用此函数重绘蒙版和图像。因此,如果我滚动设备,图像会失明或失明。
答案 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
});
});
}
编辑:代码修复