iOS - UIScrollView ne fonctionne pas (il n'a pas de défilement à tous - l'image reste fixe)
Je voudrais afficher une image (largeur: 320 pixels hauteur: 1250 pixels) dans une image vue.
Quand je compile l'application je n'ai pas de défilement à tous. La vue reste fixe.
Ce que j'ai fait:
- Ajouté une
UIScrollView
via Interface Builder de mon point de vue. - Ajouté une
UIImageView
via Interface Builder pour mon point de vue. - Vérifié que
UIImageView
est ci-dessousUIScrollView
dans Interface Builder. - Définir la taille de la
UIScrollView
avecViewDidLoad
.
Comment puis-je faire cela?
Code:
- (void)viewDidLoad
{
[super viewDidLoad];
scrollView.contentSize = CGSizeMake(320, 1250);
}
Captures d'écran:
ImageView
:
ScrollView
:
- pourquoi est-ce que votre scrollview ont une taille de 320 x 1294? Si votre scrollview a la même taille que par son contenu, il n'a pas de défilement.
- De ma faute, devrait en fait être 320x1250. De sorte que le défilement de l'affichage doit être légèrement plus grand que l'image que je veux afficher? Pour l'essayer.
- Ne fonctionne pas, l'image a 300x1000 (Défilement de l'affichage a 320x1250) mais je n'ai pas de défilement.
- nope. la scrollview doit être plus petite. Il doit être entièrement visible à l'écran. Si vous voulez un plein écran scrollview qui descendent jusqu'à une taille de 320x460
- Info: je viens de créer un nouveau projet dans Xcode et fait ce que j'ai fait avant, le défilement fonctionne, MAIS obtient désactivée lorsque j'ajoute une barre d'outils. Dois-je réagir avec la barre d'outils de plus en quelque sorte dans le code?
- Cette vidéo explique parfaitement comment définir une UIScrollView: xCode 4 Tutoriel (UIScrollView).
Vous devez vous connecter pour publier un commentaire.
J'ai juste fait la même tâche..
Essayez celui-ci.....
Également définir celui-ci....
UIImageView *img = [[UIImageView alloc] init];
mais vous n'êtes jamais le relâcher. Je préfère vous recommandons de le libérer avant chaque itération se termine plutôt que d'autorelease si vous avez beaucoup d'images, puisque vous ne savez jamais quand le runtime autorelease eux.Donc pour moi le problème était que la définition de la taille du contenu n'a pas fonctionné dans
viewDidLoad()
. J'ai tout essayé et je ne comprenais pas pourquoi il ne veulent pas travailler, et puis j'ai essayé la même chose enviewDidAppear()
et la magie a fonctionné...scrollView
, mais la cause la plus commune des erreurs de ce type est que les points de vente qui sont définies dans Interface Builder (XIB ou storyboard) ne sont pas mis en avantviewDidLoad
. Vous avez peut-être appeler un setter sur unnil
objet.De la dernière capture d'écran et de vos commentaires, il ressemble à la scrollView est moyen à grand.
La scrollview doit être visible sur l'écran complètement. Par exemple, un plein écran UIScrollView sur iPhone une taille de 320 x 460.
Si la scrollview est de la même taille que son contenu vous ne pouvez pas faire défiler.
Le verdâtre rectangle indique la taille de votre scrollview, le rosé de la taille de votre contenu (votre image):
Je suis tombé sur cette même question sur iOS6 et la solution a été de programmation pour régler la ContentSize.
Donc je vais juste citer Raja (ci-dessus) pour afficher ce:
REMARQUE: j'ai été de ne pas avoir ce problème sur iOS5.. semble iOS6 décidé de faire beaucoup de blague tout comme la rotation et de l'orientation de la saga
Depuis Xcode 5, il ne fonctionne pas comme avant. Aussi le défilement à la fin d'un texte déroulant du champ crée des problèmes. Il existe également des différences entre le faire sur l'iPhone ou l'iPad. Sur iPhone, il a travaillé sans minuterie retardée.
Cela a fonctionné pour moi:
DispatchQueue.main.async { }
J'ai trouvé que j'avais un problème similaire mais aucun code ci-dessus a travaillé. La question était due à la mise en page automatique. J'ai trouvé que si je l'ai éteint mise en page automatique en allant à la table de montage en cliquant sur les services publics -> Fichier Inspecteur et non
Use Autolayout
le défilement ne fonctionne (j'ai aussi misscroll.contentSize = ...
).Swift 4, iOS 11
La façon la plus simple à l'aide de mise en page automatique:
Parfois mise en page automatique case est cochée dans la xib. Qui crée également cette question dans xcode 5. Ce qui rend le UIScrollView défiler hors de.
N'oubliez pas d'ajouter les
catégorieprotocole de l'interface, à l'instar de ceSi vous ne le faites pas, vous ne serez pas en mesure de régler le défilement de l'affichage délégué à l'auto
(c'est à dire
[MyScrollView setDelegate:self];
)Si vous le faites, cela devrait fonctionner.
Mon code est:
Avez-vous attribuer le défilement de l'avis du délégué? Rappelez-vous toujours ces:
L'affichage de l'image doit être une sous-vue (donc à l'intérieur ET en dessous) de la scrollview. À partir de votre description, il semble qu'ils sont paralèlles
Vous avez oublié une ligne. Ajoutez ceci à votre vue de la fonction de charge:
Vous pourriez essayer de désactiver la mise en page automatique. Dans XCode 5 j'ai testé toutes les réponses ci-dessus, et je ne pouvais faire défiler par la désactivation de la mise en page automatique et l'activation de tous redimensionnement automatique des masques en vertu de la Taille de l'Inspecteur. Le code suivant a été utilisé: la
En supposant que le scrollView est une sous-vue de vue et le remplit entièrement, vous pouvez utiliser la commande suivante dans le viewDidLoad:
J'ai eu un UIScrollView qui n'était pas le défilement et cela a permis de les faire défiler.
Juste ajouter du code
à la méthode -(void)viewDidLayoutSubviews.
Pour plus d'informations caisse de Stanford CS193p Conférence N ° 8 à comprendre Vue Contrôleur de cycle de Vie.
J'ai eu le même problème et l'a été de rechercher la réponse dans ce fil. J'ai essayé tous les trucs, mais rien ne fonctionne. Ensuite, j'ai trouvé ceci:
.
Vous suffit de désélectionner "Utiliser la Mise en page Automatique" dans l'Inspecteur de Fichiers de votre
ViewController
. Ta-Da, il fonctionne immédiatement pour moi. Profitez de.