このようなUIImageをインスタンス化した場合:
UIImage *image = [[UIImage alloc] init];
オブジェクトは作成されますが、画像は含まれていません。
オブジェクトに画像が含まれているかどうかを確認するにはどうすればよいですか?
画像データがあるか確認できます。
UIImage* image = [[UIImage alloc] init];
CGImageRef cgref = [image CGImage];
CIImage *cim = [image CIImage];
if (cim == nil && cgref == NULL)
{
NSLog(@"no underlying data");
}
[image release];
Swift 3で、cgImage
またはciImage
を確認します
public extension UIImage {
public var hasContent: Bool {
return cgImage != nil || ciImage != nil
}
}
CGImage:UIImageオブジェクトがCIImageオブジェクトを使用して初期化された場合、プロパティの値はNULLです。
CIImage:UIImageオブジェクトがCGImageRefを使用して初期化された場合、プロパティの値はnilです。
これは@Kreiriの更新バージョンで、メソッドを追加して論理エラーを修正しました。
- (BOOL)containsImage:(UIImage*)image {
BOOL result = NO;
CGImageRef cgref = [image CGImage];
CIImage *cim = [image CIImage];
if (cim != nil || cgref != NULL) { // contains image
result = YES;
}
return result;
}
UIImageは、CGImageRefまたはCIImageのみに基づくことができます。両方がnilの場合、画像がないことを意味します。 Giveメソッドの使用例:
if (![self containsImage:imageview.image]) {
[self setImageWithYourMethod];
}
それが誰かを助けることを願っています。
Null値が含まれているCGImageRef自体をチェックすると、UIImageオブジェクトに画像が含まれていないことを意味します。