Bonjour à tous,
je pense qu'il n'est pas nécessaire de vous dire que je viens de commencer le développement parce que vous allez vite vous rendre compte
Comme premier projet après bien sur avoir lu pas mal de cours de base je me lance dans le développement d'une application iPhone.
Principe de l'application :
1- Démarre avec une screenSplash : OK
2- Après 2 seconde je fais appel al la camera avec un overlayview : OK
3- Apres 5 secondes je déclenche la prise de photo automatiquement: KO
Vues de l'application :
Vue de base et une vueOverlay qui contient une image sous forme de cible
mon problème c'est que je ne sait pas trop ou mettre la fonction de capture automatique pour qu'elle envoi l'image au premier ecran sans passer par un boutton
J'ai trouvé pas mal d'exemple (apple inclus) mais tous propose un bouton au niveau de l'écran OverlayView
voici le code la vue de base:
voici le code la vue overlay:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98 #import "baseViewController.h" #import "OverlayViewController.h" //transform values for full screen support #define CAMERA_TRANSFORM_X 1 #define CAMERA_TRANSFORM_Y 1.12412 //iphone screen dimensions #define SCREEN_WIDTH 320 #define SCREEN_HEIGTH 480 @interface softwaysViewController () @end @implementation softwaysViewController //@synthesize imageView, OverlayViewController, capturedImages; - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. [self performSelector:@selector(delay1) withObject:nil afterDelay:2]; //create an overlay view instance } - (void)viewDidUnload { [super viewDidUnload]; // Release any retained subviews of the main view. } - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) { return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown); } else { return YES; } } // lancer la camera a -(void) delay1 { OverlayViewController *overlay = [[OverlayViewController alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGTH)]; overlayViewController.delegate = self; //create a new image picker instance UIImagePickerController *picker = [[UIImagePickerController alloc] init]; //set source to video! picker.sourceType = UIImagePickerControllerSourceTypeCamera; //hide all controls picker.showsCameraControls = NO; picker.navigationBarHidden = YES; picker.toolbarHidden = YES; //make the video preview full size picker.wantsFullScreenLayout = YES; picker.cameraViewTransform = CGAffineTransformScale(picker.cameraViewTransform, CAMERA_TRANSFORM_X, CAMERA_TRANSFORM_Y); picker.cameraViewTransform = CGAffineTransformMakeRotation(3.141592654); //set our custom overlay view picker.cameraOverlayView = overlay; //show picker [self presentModalViewController:picker animated:YES]; // [self.imageView takePicture]; //[self performSelector:@selector( ) withObject:nil afterDelay:2]; } // as a delegate we are being told a picture was taken - (void)didTakePicture:(UIImage *)picture { [self.capturedImages addObject:picture]; } -(void) photoPrise: (UIImage *)picture { [self.imageView setImage:picture]; } @end
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84 #import "OverlayViewController.h" @interface OverlayViewController () @end @implementation OverlayViewController @synthesize delegate, imagePickerController; - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return (interfaceOrientation == UIInterfaceOrientationPortrait); } - (id)initWithFrame:(CGRect)frame { if (self = [super initWithFrame:frame]) { //clear the background color of the overlay self.opaque = NO; self.backgroundColor = [UIColor clearColor]; //load an image to show in the overlay UIImage *searcher = [UIImage imageNamed:@"crosshair.png"]; UIImageView *searcherView = [[UIImageView alloc] initWithImage:searcher]; searcherView.frame = CGRectMake(30, 100, 260, 200); [self addSubview:searcherView]; // [searcherView release]; [self performSelector:@selector(takePhoto:) withObject:nil afterDelay:5]; //add a simple button to the overview //with no functionality at the moment // UIButton *button = [UIButton // buttonWithType:UIButtonTypeRoundedRect]; // [button setTitle:@"Scan Now" forState:UIControlStateNormal]; // button.frame = CGRectMake(0, 430, 320, 40); // [self addSubview:button]; } return self; } // gets called by our repettive timer to take a picture - (void)takePhoto:(UIImagePickerController *)picker { [self.imagePickerController takePicture]; UIImage *image = [imagePickerController valueForKey:UIImagePickerControllerOriginalImage]; // give the taken picture to our delegate [self.delegate prisePhoto:image]; } // gets called by our repettive timer to take a picture - (void)takePhotoBoutton:(UIImagePickerController *)picker { [self.imagePickerController takePicture]; valueForKey:UIImagePickerControllerOriginalImage]; UIImage *image = [imagePickerController valueForKey:UIImagePickerControllerOriginalImage]; // give the taken picture to our delegate if (self.delegate) [self.delegate prisePhoto:image]; } @end
[self performSelector:@selector(takePhotowithObject:nil afterDelay:5];
c'est cette ligne qui ne se déclenche pas au bout de 5 seconde !!
merci pour votre aide
Partager