AutoLayout : Top Layout Guide

Bonjour,


 


Je débute avec le mode autolayout en mode programmatique. Je commence à  me débrouiller pour des choses simples. Mais si je compare à  stroyboard il y un truc que je n'arrive pas à  reproduire :  Placer un objet par rapport à  Top Layout Guide Bottom (au bord de la marge du haut). Pour le moment je fais cela


 


  // Set TOP & 20 Px


    [self addConstraint:[NSLayoutConstraint constraintWithItem:[self topCenterLabel]


                                                     attribute:NSLayoutAttributeTop


                                                     relatedBy:NSLayoutRelationEqual


                                                        toItem:self


                                                     attribute:NSLayoutAttributeTop


                                                    multiplier:1.0


                                                      constant:20.0]];


 

Je souhaiterais supprimer le vilain magic number 20. Le truc tourne à  mon avis autour du toItem mais je ne trouve pas malgré mes recherches

 

D'avance merci de votre aide

 

s

e

b

Mots clés:

Réponses

  • AliGatorAliGator Membre, Modérateur
    UIViewController a une propriété qui s'appelle topLayoutGuide. C'est l'objet retourné par cette propriété que tu dois utiliser pour aligner ton label avec le Top Layout Guide de ton écran.
  • Merci de ta réponse


     


    C'est bien le problème je manipule des objets UIView je n'ai pas accès à  l'UIViewController je suis bloqué. Voici le gitHib de mon projet de test.


     


    D'avance merci de votre aide


  • Presque... Je n'y ai pas trouvé la solution à  mon problème mais j'y ai trouvé pas mal d'explication concernant ma problématique 


     


    https://vimeo.com/55353268


     


    Je suis moins .on qu'il y a une heure amis je cherche toujours...


  • AliGatorAliGator Membre, Modérateur
    Bah un UIView tout seul n'a pas de topLayoutGuide c'est normal. C'est un VC qu'il te faut pour manager ta vue et la gérer dans l'écran.


    À la limite tu peut ajouter une contrainte entre ta vue et le rootViewController.topLayoutGuide si tu n'as vraiment pas de VC mais bon c'est pas top comme archi.
  • Merci de vos réponses, effectivement c'est un problème d'archi : Ma vue principale ne doit pas s'occuper de la taille de l'écran disponible (taille - marges - statusbar). Elle doit occuper la place que lui accorde le viewcontroller.


     


    Je vais avancer en modifiant l'architecture.


     


    Encore merci de vos lumières !!


     


    s


    e


    b


  • Je tourne en rond dans mon architecture et la nuit ne m'a pas apporté la solution....


     


    Je souhaite utilisé les contraintes dans une view (mainView) et je souhaite que cette view se place dans les layouts de l'écran, notamment afin de gérer tous les écrans ainsi que les marges et l'agrandissement de la barre de status (en cas d'appel et de partage de connection).


     


    J'ai un code exemple sur GitHub ici


     


    Dans la branche  "Constraint_in_ViewController_Test" j'ai essayé de mettre des contraintes dans le viewcontroller mais là  je bug...


     


    Merci de votre aide.


     


    s


    e


    b


  • Bonjour,


     


    Je viens de terminer la digestion des infos acquissent ce week-end sur les autolayouts et mon problème semble géré correctement. Vous pouvez le voir ici sur GitHub.


     


    Merci à  tous pour votre aide


     


    s


    e


    b


  • Encore une dernière sollicitation concernant l'archi MVC : D'après vous, où sont le mieux placé les contraintes dans la vue ou dans le contrôleur ?


  • CéroceCéroce Membre, Modérateur

    View Controller. Les contraintes étant associées à  la vue parente.


Connectez-vous ou Inscrivez-vous pour répondre.