2013-11-21 76 views
1

在我的應用程序中,我有一個UIView,它將根據用戶的觸摸拉伸。它意味着用作簽名框。當用戶完成「繪圖」時,他們擊中接受,應用程序繼續。但是,我想檢查UIView是否真的被繪製,例如它不只是空白。我試着製作另一個空的UIImageView,並檢查他們的圖像是否相等但失敗。這是我試過的:檢查空的UIView?

注意:signatureBox是UIView的子類,您可以在其中繪製。我保存簽名,並將其與空白UIImageView中的圖像進行比較。

viewDidLoad{ 

    UIGraphicsBeginImageContext(self.signatureBox.bounds.size); 
    [self.signatureBox.layer renderInContext:UIGraphicsGetCurrentContext()]; 
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    NSData *imageData = UIImagePNGRepresentation(image); 
    self.blankImage.image = [UIImage imageWithData:imageData]; 

} 

mySaveMethod{ 
    UIGraphicsBeginImageContext(self.signatureBox.bounds.size); 
    [self.signatureBox.layer renderInContext:UIGraphicsGetCurrentContext()]; 
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    NSData *imageData = UIImagePNGRepresentation(image); 
    self.signatureImage = [UIImage imageWithData:imageData]; 

    if(self.signatureImage == self.blankImage.image){ 
     NSLog(@"Blank"); 
    } 
    else{ 
     NSLog(@"not blank"); 
    } 

} 

這nslogs「不爲空」每次不管我是否在該signatureBox繪製或沒有時間。任何想法爲什麼?

+0

我不認爲你的比較是非常好的。也許這可以幫助:[編輯]:我想指出@rdelmar所說的,你從不比較對象與=,對象使用方法進行比較。 [1]:http://stackoverflow.com/a/8182232/2902264 – Paroxysm

+0

我不知道這是否會起作用(我從來沒有試圖比較圖像),但是您不會比較對象與「 =「,你使用isEqual: – rdelmar

+0

如果上面的建議不起作用,只需檢查圖像中每個像素的顏色,看看它是否等於默認顏色,如果不是,那麼你知道圖像不是空白。 –

回答

1

只要用戶第一次在盒子裏畫東西,爲什麼不把BOOL設置爲YES?這可以在您的手勢識別器目標方法中完成。如果他們保存並且BOOL仍然沒有,他們還沒有畫任何東西。比試圖分析產生的圖像要簡單得多。

+0

這是最好的解決方案,因爲它非常簡單。每個人都總是推翻東西!順便提一下大鬍子! –