2011-11-18 11 views

Odpowiedz

64

Możesz sprawdzić, czy ma jakieś dane obrazu.

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

Dziękuję bardzo, to działa doskonale! – Jonathan

+0

Ale [obraz CIImage]; dostępne tylko w systemie iOS 5. A co z 4.3? –

+4

nie działa jako cim zwraca zero – hii

0

Sprawdź z CGImageRef z siebie pogodowymi zawiera wartość null oznacza UIImage sprzeciw nie zawiera wizerunek .......

8

Sprawdź cgImage lub ciImage w 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

możesz podać aktualizację dla Swift 3 –

+0

@AnkitKumarGupta zrobione – onmyway133

0

To jest zaktualizowana wersja @Kreiri, wstawiłem metodę i naprawiono błąd logiczny:

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

Obiekt UII mógł bazować tylko na CGImageRef lub CIImage. Jeśli oba są zerowe, oznacza to, że nie ma obrazu. Przykład użycia metody podając:

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

mam nadzieję, że komuś pomoże.