ios - sur - mon iphone detecte le chargeur mais ne charge pas




UIScrollView ne défile pas? (4)

J'ai un UIScrollView créé dans le constructeur d'interface avec un tas d'objets UITextView et UIImageView déjà ajoutés. Je l'ai connecté à un IBOutlet , et sous -(void)viewDidLoad j'ai défini sa taille de contenu à 1200x2000 . Interaction de l'utilisateur Activé, Multitouch, Défilement activé et affiche les indicateurs de défilement vertical et horizontal sont tous réglés sur YES . Lorsque je lance l'application dans le simulateur iOS, elle ne défile pas. Quelle pourrait être la cause de ce comportement?


La meilleure façon de surmonter ce problème sans recourir à l'écriture de code est que tout peut être fait dans un storyboard et voici comment:

  1. Laissez la mise en page automatique activée.
  2. Faire un UIView générique une sous-vue de l'UIScrollView. 2.1) Placez tous vos composants View dans cet UIView générique.
  3. Faire une contrainte autolayout entre une sous-vue et l'UIScrollView. Vous devez épingler le droit et / ou le bas de la dernière sous-vue à droite et / ou en bas de l'UIScrollView. C'est ainsi que UIScrollView connaît la taille du contenu.

viewDidLoad est en effet trop tôt, mais viewDidAppear:animated pourrait ne pas être assez tard non plus. L'endroit idéal pour définir le contentOffset est à l'intérieur de viewDidLayoutSubviews .



J'utilise une vue personnalisée sur le UIScrollView, pour tirer à la fonction d'actualisation, et la vue de défilement ne peut pas défiler. J'essaie de définir contentSize avec AutoLayout , et essayez de le définir par des codes aussi. La vue défilement ne peut toujours pas défiler.

Après avoir passé 3 ~ 4 heures, je le résous par contentInset . Il indiquera à la vue de défilement d'ajouter de l'espace supplémentaire pour le défilement.

override func viewDidLayoutSubviews() {
    // Add extra 15pt on the `top` of scrollView.
    //self.scrollView.contentInset = UIEdgeInsetsMake(15, 0, 0, 0)

    // Add extra 2pt on the `bottom` of scrollView, let it be scrollable. And the UI is more beautiful in my case. 
    self.scrollView.contentInset = UIEdgeInsetsMake(0, 0, 2, 0)
}

Documents de référence:







uiscrollview