私のアプリでは、ユーザーがカメラ オーバーレイ (作業部分) を使用して写真を撮ることができます。その後、画像を保存したり、共有したりできます。画像ピッカーからの UIImage を UIView オーバーレイとマージする方法があります。
iOS 7で動かなくなった!なぜだか理解できません...
- (void)saveUserImageWithOverlay: (UIView*)overlay
{
UIImage *image = self.userImage;
CGSize outputImageSize = [[UIScreen mainScreen] bounds].size;
outputImageSize.height -= MENU_BAR_UI_OFFSET;
CGSize userPhotoImageSize = [[UIScreen mainScreen] bounds].size;
userPhotoImageSize.height = (image.size.height * userPhotoImageSize.width) / image.size.width;
if (NULL != UIGraphicsBeginImageContextWithOptions)
{
UIGraphicsBeginImageContextWithOptions(outputImageSize, NO, 0);
}
else
{
UIGraphicsBeginImageContext(outputImageSize);
}
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetAlpha(context, 0.0);
CGContextSetRGBFillColor(context, 1.0, 1.0, 1.0, 0.0);
CGContextAddRect(context, CGRectMake(0.0, 0.0, outputImageSize.width, outputImageSize.height));
CGContextDrawPath(context, kCGPathFill);
[image drawInRect:CGRectMake(2.0,
((outputImageSize.height - userPhotoImageSize.height) / 2.0) +2.0,
userPhotoImageSize.width -4.0,
userPhotoImageSize.height -4.0)];
[self renderView:overlay inContext:context];
UIImage *screenshot = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
self.editedImage = screenshot;
}
結果の画像には写真のみが含まれます (オーバーレイはありません!)。どうして?!?オーバーレイだけレンダリングしてみました。できます。BLACK rectの背景を削除してみました。できます。
黒い長方形がオーバーレイを隠しているのはなぜですか?