Aller au contenu


Photo

Redimensionner les éléments enfants lorsque le frame de la UIView parente est modifiée avec une animation

uiview coreanimation frame

  • Please log in to reply
23 réponses à ce sujet

#21 Draken

Draken

    Mouleur de chocolats

  • Artisan chocolatier
  • PipPipPipPipPipPipPipPip
  • 8 601 messages
  • LocationParis

Posté 07 août 2017 - 22:15

Je viens de trouver. Je n'avais pas setté à false la valeur de la propriété translatesAutoresizingMaskIntoConstraints. Maintenant ça fonctionne parfaitement.  :)

self.titleView.translatesAutoresizingMaskIntoConstraints = false

 

C’est clair qu’en n’activant pas l’AutoLayout cela ne risquait pas de fonctionner. J’avais été surpris à l’époque de voir qu’il fallait mettre la valeur false pour l’activer. Storyboard gère automatiquement tous ces fichus paramètres.


Garçon, servez-moi un Covfefe avec du lait de soja, sans OGM ..

Et faites régler la climatisation, il fait bien chaud, ici !

 

 

Éternel Novice !  :baby:

Tueur de poneys !  :(

 

Faire simple .. c'est compliqué !

Faire compliqué .. c'est simple !

 

Un MOOC (cours en ligne - dont je ne suis pas l'auteur) gratuit sur la programmation en Obj-C et en Swift 3, démarrant le 14 Mars 2017 :

https://www.edx.org/...onnex-progios1x

 

Des dizaines d'heures de tutoriels vidéo en français (je ne suis pas l'auteur) pour apprendre à développer en Obj-C et Swift : http://pagesperso-sy...don/5I452-2014/

 

 


#22 Jérémy

Jérémy

    Ecabosseur en fèves

  • Membre
  • PipPipPipPip
  • 342 messages
  • LocationBordeaux

Posté 10 août 2017 - 14:02

Merci bien Draken !  :)

 

J'arrive à créer le comportement que je voulais. Pour faire simple, j'ai repris ta solution mais en codant les contraintes. Si tu maîtrises le procédé sur xib, tu arrives à t'en sortir. Par contre ce n'est pas du tout intuitif, tu n'as pas d'infobulle pour t'avertir qu'il y a un conflit entre tes NSLayoutConstraint...

 

Par contre (chose qui est peut être étrange), l'animation fonctionne bien (les éléments suivent bien également) avec le code ci-dessous:

public func animate() {
    UIView.animate(withDuration: 0.5, delay: 0.0, option: [.curveEaseInOut,.layoutSubviews], animation: {
        self.myView.frame = CGRect(x: CGFloat(0.0), y: CGFloat(0.0), width: CGFloat(300.0), height: CGFloat(300.0))
    })
}

Twitter : @jrmguimberteau


#23 Draken

Draken

    Mouleur de chocolats

  • Artisan chocolatier
  • PipPipPipPipPipPipPipPip
  • 8 601 messages
  • LocationParis

Posté 10 août 2017 - 14:38

Good !

 

Bon travail.

 

 

 

Par contre (chose qui est peut être étrange), l'animation fonctionne bien (les éléments suivent bien également) avec le code ci-dessous:

public func animate() {
    UIView.animate(withDuration: 0.5, delay: 0.0, option: [.curveEaseInOut,.layoutSubviews], animation: {
        self.myView.frame = CGRect(x: CGFloat(0.0), y: CGFloat(0.0), width: CGFloat(300.0), height: CGFloat(300.0))
    })
}

 

Il doit y avoir une différence subtile entre l’utilisation de Storyboard et des Autolayout par code. Ou je me suis trompé dans mes tests, ce qui n’aurais rien d’étonnant. Mais la question m’intéresse, je m’y replongerais quand j’aurais un peu de temps libre. 


Garçon, servez-moi un Covfefe avec du lait de soja, sans OGM ..

Et faites régler la climatisation, il fait bien chaud, ici !

 

 

Éternel Novice !  :baby:

Tueur de poneys !  :(

 

Faire simple .. c'est compliqué !

Faire compliqué .. c'est simple !

 

Un MOOC (cours en ligne - dont je ne suis pas l'auteur) gratuit sur la programmation en Obj-C et en Swift 3, démarrant le 14 Mars 2017 :

https://www.edx.org/...onnex-progios1x

 

Des dizaines d'heures de tutoriels vidéo en français (je ne suis pas l'auteur) pour apprendre à développer en Obj-C et Swift : http://pagesperso-sy...don/5I452-2014/

 

 


#24 Jérémy

Jérémy

    Ecabosseur en fèves

  • Membre
  • PipPipPipPip
  • 342 messages
  • LocationBordeaux

Posté 10 août 2017 - 15:32

J'avais zappé...

 

J’avais été surpris à l’époque de voir qu’il fallait mettre la valeur false pour l’activer. Storyboard gère automatiquement tous ces fichus paramètres.

 

La même pour moi !  xd 

 

Par défaut, le storyboard positionne la variable à false alors que via du code c'est la valeur true qui sera positionnée...

 

Les animations, je les appliquais directement sur les frames. Mais je vais jouer avec les NSLayoutContraints, ça me semble pus simple.


Twitter : @jrmguimberteau






Also tagged with one or more of these keywords: uiview, coreanimation, frame

0 utilisateur(s) li(sen)t ce sujet

0 membre(s), 0 invité(s), 0 utilisateur(s) anonyme(s)