Faire pivoter une coutume UITableViewCell
J'ai un custom UITableViewCell qui contient plusieurs UIButtons. Chaque bouton de la position des cadres est par rapport à la largeur de la cellule. J'ai mis autoresizingMask=UIViewAutoresizingFlexibleWidth pour régler la largeur de la cellule et les positions des boutons correctement lorsque l'application démarre avec l'appareil soit en mode paysage ou en mode portrait.
Le problème est lorsque l'appareil est mis en rotation à partir d'un mode à l'autre, les boutons de ne pas ajuster les positions parce que le UITableViewCell est réutilisable. En d'autres termes, la cellule n'est pas initialisée en fonction de la nouvelle UITalbeView largeur, car la cellule est fonction initWithStyle est appelée avant que la rotation de l'appareil et n'est pas appelé de nouveau après que le dispositif de rotation. Des suggestions?
J'ai le même problème que vous, et pensait à l'aide de cellules spécifiques des balises pour chaque orientation des cas, puisque cette idée m'est venue après avoir réfléchi un moment. À l'aide de l'auto.contentView.autoresizesSubviews=OUI ne fonctionne pas de mon côté.
Enfin j'ai utilisé un autre truc.
OriginalL'auteur Wayne Lo | 2010-03-19
Vous devez vous connecter pour publier un commentaire.
Depuis UITableViewCell est aussi une UIView, vous pouvez remplacer setFrame méthode. À chaque fois que votre vue de la table de rotation, cette méthode sera appelée pour toutes les cellules.
OriginalL'auteur balboa
Après avoir passé des heures de recherche (y compris les postes de ce site), je ne pouvais pas trouver toutes les solutions. Mais une ampoule s'allume tout d'un coup. La solution est très simple. Juste détecter si l'appareil orientation paysage ou en mode portrait, et de définir les ReusableCellIdentifier avec un nom différent pour chaque.
OriginalL'auteur Wayne Lo
Réponse précédente a un grave problème.
Vous devez utiliser [UIApplication sharedApplication].statusBarOrientation au lieu de [UIDevice currebtDevice].l'orientation car d'orientation de l'écran n'a rien à voir avec l'interface d'orientation - orientation du Périphérique physique de rotation basé sur accéléromètre.
Je suis désolé, vous n'êtes pas de droite. Dispositif d'orientation a 6 options différentes, tandis que l'interface de l'orientation a 4. Si votre appareil est la pose de la plaine sur la table, le Dispositif d'orientation rapport de "Face", qui n'a rien de commun avec l'interface actuelle de l'orientation.
Hrissan, merci pour la correction.
OriginalL'auteur Hrissan
La réponse cochée fonctionne comme un charme dans le vieux les versions d'iOS. Pour iOS 6.0, j'ai utilisé le code suivant:
OriginalL'auteur user2144580
Vous aurez besoin de fixer vos cellules largeur du cadre (en supposant que la hauteur est la même en mode portrait et en mode paysage) au sein de votre
cellForRowAtIndexPath
méthode. C'est ce qui est le fait de travailler ici. J'ai utilisé pour créer un personnalisé TableViewCell avec le bureau international et il est toujours initialisé pour le portrait 320 px de largeur. Avec la définition de l'image qu'il fonctionne comme prévu, même si la cellule est "réutilisés" à partir de la file d'attente.OriginalL'auteur Mike Bretz
J'ai eu un problème similaire et ce post m'a aidé. Dans mon cas, j'ai une classe personnalisée déclaré dans un fichier séparé, et dans ce fichier j'ai le code suivant dans
layoutSubviews
:Alors de mon point de vue contrôleur je viens de mettre en œuvre
willAnimateRotationToInterfaceOrientation:
et envoyer lereloadData
message à ma table.Avec ce je ne touchez pas à la
cellForRow
méthode.OriginalL'auteur Giovanni