9
votes

Chargement d'un UidatePicker dans le paysage sur une commande UinavigationController

J'ai une uoinavigationController personnalisée qui prend en charge la rotation automatique. J'ai aussi un uidatePicker sur l'une de mes vues que je jette sur la pile du contrôleur de navigation. La rotation automatique fonctionne si je démarre la vue du sélecteur de date en portrait, puis faites-la pivoter. Si j'essaie de charger la vue de sélecteur de la date dans le paysage pour commencer, la vue est tout gâchée. On dirait que cela ne serait pas en faveur de la rotation et que le cadre ne dispose que d'environ la moitié du sélecteur visible et hors centre.

J'ai essayé de faire mon propre sélecteur de date prenant en charge la rotation automatique au cas où le problème, j'ai essayé de créer deux vues différentes et de les échanger, et j'ai essayé de changer la taille de l'image de vue sur la viewwillappear méthode. Aucun d'entre eux ne semble fonctionner pour moi pour le moment.

Quelqu'un a-t-il des suggestions sur la manière d'obtenir le sélecteur de date à apparaître correctement dans le paysage sur un contrôleur de navigation? Je suis probablement négligé quelque chose de simple et la réponse est juste devant moi, mais je ne le trouve pas.


0 commentaires

6 Réponses :


0
votes

Eh bien, je l'ai réparé. J'ai réussi à faire un chèque pour voir quelle était l'orientation, puis retirez le sélecteur de date et le code, j'ai recréé un sélecteur de date et l'a ajouté. Cela a fonctionné, ce n'était pas beau, mais cela a fonctionné.


1 commentaires

Apparemment, il ne rend pas correctement si le périphérique est déjà en orientation du paysage lorsque le contrôleur de vue est chargé à partir du NIB. Donc, votre solution pour recréer le contrôle a du sens, mais j'ai trouvé une solution plus agréable, voir ma réponse.



0
votes

Ajouter un sélecteur de date à afficher qui est auto-rotatif (vue du contrôleur, non directement dans la fenêtre).

SET Self.AutoresizedMask = uiviewiewieWAWEWAWEWAWAWEADERESIZINGFLEIBLEWIDTH | UIViewAutoresizeflexibleTopmargin


0 commentaires

13
votes

J'ai couru dans le même problème. Lorsque vous chargez une vue pendant votre orientation du paysage, le UIPICKER n'est pas rendu correctement. J'ai passé plusieurs heures à essayer de trouver une solution de contournement jusqu'à ce que j'ai trouvé un correctif de Cette page de Llamagagagraphics . Vous ajoutez ce code dans la vue ViewDiDload du contrôleur d'affichage qui a le sélecteur:

for (UIView* subview in myPicker.subviews) {
    subview.frame = myPicker.bounds;
}


2 commentaires

Solution brillante et simple. C'était vraiment foutu, merci!


+1 grande solution. J'essayais de résoudre ce problème presque toute la journée et cette ligne est résolue dans une seconde. Homme à bascule! Merci beaucoup..



0
votes

Voici ce qui a fonctionné pour moi. Quand je crée le satdatpicker, je pense que c'est en mode portrait:

[[UIApplication sharedApplication] setStatusBarOrientation: UIInterfaceOrientationPortrait  animated: NO];
datePicker = [[UIDatePicker alloc] initWithFrame: CGRectZero];
[[UIApplication sharedApplication] setStatusBarOrientation: curOrientation animated: NO];


0 commentaires

0
votes

J'ai eu le même problème à afficher le sélecteur de date (en mode TIMER) redimensionné horizontalement sur l'iPad. Je n'ai pas pu obtenir d'une des solutions connues à ce bogue pour travailler, j'ai donc réparé cela avec un piratage laid, qui impliquait que la mise en vue de la mise en vue de la mise en vue de la mise en vue, et l'autre est en taille standard (320px). Au premier plan ... Je sais, semble malade, mais il s'affiche correctement et c'est ce qui compte. C'est la faute de Apple quand même;)


0 commentaires

1
votes

Le code ci-dessous fonctionnera pour le mode portrait et paysage. Pour cela, vous devez définir votre origine TableView Cadre comme celle-ci ci-dessous: -

_dateTableViewCell=[self.tableView dequeueReusableCellWithIdentifier:@"DatePickerCell"];
if (self.dateTableViewCell==nil)
{
    CGRect rect;
    self.dateTableViewCell=[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:@"DatePickerCell"];
    UIDatePicker *datePicker=[[UIDatePicker alloc]initWithFrame:frame];
    datePicker.datePickerMode=UIDatePickerModeDateAndTime;
    datePicker.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
    CGRect cellRect = self.dateTableViewCell.frame;
    cellRect.size.height = 216;
    self.dateTableViewCell.frame = cellRect;
    CGRect startRect = self.dateTableViewCell.frame;
    startRect.origin.x = 0.0;
    datePicker.frame = startRect;
    [self.dateTableViewCell.contentView addSubview:datePicker];
}


0 commentaires