2010-02-17 6 views
1

J'essaye d'implémenter la fonctionnalité de changement d'orientation dans mon application. J'ai surchargé - (void) didRotateFromInterfaceOrientation: (UIInterfaceOrientation) fromInterfaceOrientation.Iphone Orientation Change

Dans cette méthode, je change la taille d'image de la vue de table (y compris la position des éléments de la cellule) qui est présente dans la vue. Les Tableview Détails:

  1. ajouté à la vue sous la forme [self.view addSubview: tableView] dans le procédé viewDidLoad du contrôleur de vue;
  2. L'élément de cellule (ligne) a un champ de texte et un contrôle segmenté.
  3. Il y a 10 cellules dans la vue de table et en mode paysage seulement 2 cellules sont visibles et en mode potrait 5 cellules sont visibles.

J'ai mis en œuvre scroller.

Problème: Certaines fois, lors du changement d'orientation en mode potrait, certaines commandes segmentées de la cellule ne sont pas affichées (pas du tout). Cela se produit lorsque je regarde les dernières cellules dans le mode paysage et que je change l'orientation en mode potrait.

Répondre

0

Je pense qu'il y a un problème dans le réglage de votre cadre. J'ai eu un problème similaire lorsque je passais du portrait au paysage. Essayez de voir si la logique derrière le processus de rotation (réglages des cadres, des positions, etc.) est correcte. pour moi cet article était vraiment utile link text

pour le tableView, vous pouvez essayer de régler le autoresizingMask à UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight pour voir si lors de la rotation de la table ajuste correctement.

tableView.autoresizingMask = UIVvueAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;

0

Mon application sandbox La solution est simple:

https://github.com/comonitos/programatical_device_orientation

dans l'interface (fichier h):

BOOL rotation;

mise en œuvre (fichier m):

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    return rotated; 
} 
- (void) setup 
{ 
    rotated = YES; 
    [[UIDevice currentDevice] setOrientation:UIDeviceOrientationLandscapeLeft]; 
    rotated = NO; 
}