2011-11-18 44 views
28

Nếu tôi nhanh chóng một UIImage như thế này:UIImage, kiểm tra xem có chứa hình ảnh

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

Đối tượng được tạo ra nhưng nó không chứa bất kỳ hình ảnh.

Làm cách nào để kiểm tra xem đối tượng của tôi có chứa hình ảnh hay không?

Trả lời

64

Bạn có thể kiểm tra xem nó có bất kỳ dữ liệu hình ảnh nào không.

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

Cảm ơn bạn Rất nhiều, đó là công việc hoàn hảo! – Jonathan

+0

Nhưng [image CIImage]; chỉ khả dụng trong iOS 5. Còn khoảng 4.3? –

+4

không hoạt động như cim trả về nil – hii

0

Kiểm tra với CGImageRef với chính nó Thời tiết nó chứa giá trị null nghĩa UIImage đối tượng không chứa hình ảnh .......

8

Kiểm tra cgImage hoặc ciImage, trong 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

bạn có thể vui lòng cung cấp bản cập nhật cho swift 3 –

+0

@AnkitKumarGupta done – onmyway133

0

Đây là phiên bản cập nhật của @Kreiri, tôi đã đưa ra phương pháp và lỗi logic cố định:

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

Một UIImage chỉ có thể dựa trên CGImageRef hoặc CIImage. Nếu cả hai là không có nghĩa là không có hình ảnh. Ví dụ sử dụng phương thức đưa ra:

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

hy vọng nó sẽ giúp ai đó.

Các vấn đề liên quan