2013-08-02 18 views
8

Próbuję dodać widok nakładki i przenieść funkcjonalność skali & do przechwyconego obrazu, ale nie mogę tego zrobić z powodu widoku nakładki.Przenoszenie i skalowanie nie działają, gdy zestaw overlayview do kamery

Oto mój kod:

-(void)showOverlayCamera 
{ 

UIImagePickerController *pickerObj = [[UIImagePickerController alloc] init]; 
pickerObj.delegate = self; 
pickerObj.allowsEditing = YES; 
pickerObj.sourceType = UIImagePickerControllerSourceTypeCamera; 

// creating overlayView 
UIView* overlayView = [[UIView alloc] initWithFrame:self.view.bounds]; 
UIImageView *logoImgView=[[UIImageView alloc]initWithImage:[UIImage imageNamed:@"logo.png"]]; 
logoImgView.frame=CGRectMake(10, 10, 100, 20); 
[overlayView addSubview:logoImgView]; 

//add lable in overlay view 
UILabel *headerLabel=[[UILabel alloc]initWithFrame:CGRectMake(10, logoImgView.frame.origin.y+logoImgView.frame.size.height+10, 250, 40)]; 
[email protected]"New Scan"; 
headerLabel.textColor=[UIColor whiteColor]; 
headerLabel.font=[UIFont fontWithName:@"Helvetica-Bold" size:40]; 
headerLabel.backgroundColor=[UIColor clearColor]; 
[overlayView addSubview:headerLabel]; 

//add square image in overlay view 
squareImgView=[[UIImageView alloc]initWithImage:[UIImage imageNamed:@"cameraBorder.png"]]; 
squareImgView.frame=CGRectMake(60, headerLabel.frame.origin.y+headerLabel.frame.size.height+20, 200, 200); 
[overlayView addSubview:squareImgView]; 

//adding lable in overlay view 
UILabel *instructionLabel=[[UILabel alloc]initWithFrame:CGRectMake(60, squareImgView.frame.origin.y+squareImgView.frame.size.height+5, 250, 60)]; 
instructionLabel.numberOfLines=2; 
[email protected]"Focus your mole in the center of square"; 
instructionLabel.textColor=[UIColor whiteColor]; 
instructionLabel.font=[UIFont fontWithName:@"Helvetica" size:20]; 
instructionLabel.backgroundColor=[UIColor clearColor]; 
[overlayView addSubview:instructionLabel]; 

[overlayView.layer setOpaque:NO]; 
overlayView.opaque = NO; 
//adding overlay view on camera 
[pickerObj setCameraOverlayView:overlayView]; 
[self presentViewController:pickerObj animated:YES completion:nil]; 
} 

Odpowiedz

3

Spróbuj podejmowania Overlay instancji podklasy UIView z zastąpionej hitTest: withEvent :. Jeśli nie chcesz, aby to, czy którekolwiek z jego podstron, otrzymywało dotknięcia, to byłoby tak:

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event { 
    return nil; 
} 
+0

tak, johnyu, próbowałem go, ale nadal nie działa –

+0

I bez tego overlayView wszystko działa dobrze? Czy próbowałeś również ustawić userInteractionEnabled = NO we wszystkich subviewsach nakładki? – johnyu

+0

Tak, bez tej nakładki wszystko działa poprawnie. I spróbowałem użytkownika wszystkich subviewInteractionEnabled = NO; –

5

Wreszcie otrzymuję odpowiedź. Tworzę podklasę UIView dla overlayview i przesłonię następującą metodę, zignoruje ona dotknięcia na overlayView.

-(BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event 
{ 

return NO; 
} 
Powiązane problemy