Je souhaite écrire une application me permettant d'avoir 5 pages sur lesquelles je peux scroller comme bon me semble à l'aide d'un controle de page.
Mon code est le suivant :
Le ViewController.h :
Le ViewController.m est le suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 #import <UIKit/UIKit.h> @interface ViewController : UIViewController <UIScrollViewDelegate> { ... } @property (weak, nonatomic) IBOutlet UIScrollView *sv; @property (weak, nonatomic) IBOutlet UIPageControl *laPage; - (IBAction)changePage:(id)sender; @end
Cependant lorsque je lance le run il m'affiche un écran blanc dans le simulateur. Le problème se situerait dans le ViewController.h mais je ne sais quoi mettre entre les accolades de :
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 #import "ViewController.h" @interface ViewController () @end @implementation ViewController - (void)scrollViewDidScroll:(UIScrollView *)sender { //stockage à gauche de la largeur de la page CGFloat largeurPage = _sv.frame.size.width; //calcul du numéro de page à afficher int page = floor((_sv.contentOffset.x - largeurPage / 2) / largeurPage) + 1; //mettre à jour la valeur calculée pour pouvoir l'afficher _laPage.currentPage = page; } - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. //définition d'un objet couleur qu'on initialise avec 5 couleurs NSArray *couleurs = [NSArray arrayWithObjects:[UIColor redColor],[UIColor greenColor], [UIColor blueColor], [UIColor cyanColor],[UIColor yellowColor],nil]; for (int i = 0; i < couleurs.count; i++) { // Définition d'un rectangle CGRect rectangle; // Définition de l'origine et la taille d'un rectangle //abscisse rectangle.origin.x = _sv.frame.size.width * i; //ordonnee rectangle.origin.y = 0; //Le rectangle a la même dimension que le UIScrollView rectangle.size = _sv.frame.size; // Ajout de la vue correspondante UIView *subview = [[UIView alloc] initWithFrame:rectangle]; //initialisation de l'objet avec la couleur (i) subview.backgroundColor = [couleurs objectAtIndex:i]; //définition de la sous vue avec l'objet subview [_sv addSubview:subview]; } _sv.contentSize = CGSizeMake(_sv.frame.size.width * couleurs.count, _sv.frame.size.height); } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } - (IBAction)changePage:(id)sender { //définition de la variable frame de type CGRect CGRect frame; //définition du décalage en abscisse de l'affichage frame.origin.x = _sv.frame.size.width * _laPage.currentPage; //l'ordonnée de la page tjr à 0 frame.origin.y = 0; //mise à jour de la propriété size du rectangle avec les composantes calculées plus haut frame.size = _sv.frame.size; //mise à jour de l'affichage en définissant le rectangle visible avec une animation [_sv scrollRectToVisible:frame animated:YES]; } @end
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 @interface ViewController : UIViewController <UIScrollViewDelegate> { ... }
Partager