Если я создаю UIImage следующим образом:
UIImage *image = [[UIImage alloc] init];
Объект создан, но он не содержит изображения.
Как я могу проверить, содержит ли мой объект изображение или нет?
Если я создаю 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];
Проверьте cgImage
или ciImage
, в Swift 3
public extension UIImage {
public var hasContent: Bool {
return cgImage != nil || ciImage != nil
}
}
CGImage: если объект UIImage был инициализирован с использованием объекта CIImage, значение свойства равно NULL.
CIImage: если объект UIImage был инициализирован с использованием CGImageRef, Значение свойства равно нулю.
Проверить с CGImageRef с самим собой, если он содержит значение NULL, означает, что объект UIImage не содержит изображения.......
Это обновленная версия @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. Если оба значения равны нулю, изображение отсутствует. Пример использования метода предоставления:
if (![self containsImage:imageview.image]) {
[self setImageWithYourMethod];
}
надеюсь, что это поможет кому-то.