2011-11-18 11 views

Respuesta

64

Puede verificar si tiene algún dato de imagen.

UIImage* image = [[UIImage alloc] init]; 

CGImageRef cgref = [image CGImage]; 
CIImage *cim = [image CIImage]; 

if (cim == nil && cgref == NULL) 
{ 
    NSLog(@"no underlying data"); 
} 
[image release]; 
+0

Muchas gracias, ¡eso funciona a la perfección! – Jonathan

+0

Pero [imagen CIImage]; disponible solo en iOS 5. ¿Qué hay de 4.3? –

+4

no funciona como cim returns nil – hii

0

Comprobar con CGImageRef consigo mismo tiempo lo que contiene el valor nulo significa UIImage objeto no contiene la imagen .......

8

Comprobar para cgImage o ciImage, en Swift 3

public extension UIImage { 

    public var hasContent: Bool { 
    return cgImage != nil || ciImage != nil 
    } 
} 

CGImage: If the UIImage object was initialized using a CIImage object, the value of the property is NULL.

CIImage: If the UIImage object was initialized using a CGImageRef, the value of the property is nil.

+0

puede por favor dar una actualización para swift 3 –

+0

@AnkitKumarGupta done – onmyway133

0

Esta es la versión actualizada de @Kreiri, puse en un método y corrigió un error de lógica:

- (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; 
} 

Un UIImage solo puede basarse en CGImageRef o CIImage. Si ambos son nulos significa que no hay imagen. Ejemplo de uso del método de entrega:

if (![self containsImage:imageview.image]) { 
    [self setImageWithYourMethod]; 
} 

Espero que ayude a alguien.

Cuestiones relacionadas