2013-11-21 3 views
1

내 응용 프로그램에서 사용자 접촉에 따라 drawView 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

귀하의 비교가 매우 좋다고 생각하지 않습니다. 아마도 이것은 도움이 될 수 있습니다 : [link] [1] 편집 : @rdelmar가 말한 것을 지적하고 싶습니다. =와 객체를 절대 비교하지 마십시오. 객체는 비교할 메소드를 사용합니다. [1] : http://stackoverflow.com/a/8182232/2902264 – Paroxysm

+0

이것이 작동하는지 (이미지 비교를 시도한 적이없는) 모르지만 " = ", isEqual : – rdelmar

+0

위의 제안이 작동하지 않으면 이미지의 각 픽셀의 색상을 확인하고 기본 색상과 같은지 확인하십시오. 그렇지 않으면 이미지가 비어 있지 않습니다. –

답변

1

사용자가 상자에 처음으로 무언가를 그 으자 마자 BOOL이 YES로 설정되지 않는 이유는 무엇입니까? 이것은 제스처 인식기 대상 방법으로 수행 할 수 있습니다. 그들이 구원을 때리고 BOOL이 여전히 NO라면, 그들은 아무 것도 끌지 않았습니다. 결과 이미지를 분석하는 것보다 훨씬 간단합니다.

+0

이것은 매우 간단하기 때문에 가장 좋은 해결책입니다. 모두는 항상 물건을 overthink! 그런데 위대한 콧수염! –

관련 문제