2010-12-14 4 views
1

J'ai deux UILabels dans un fichier XIB, l'un sur l'autre, dont le contenu est chargé à partir d'un fichier source JSON sur le réseau. Etant donné que je ne suis pas sûr du nombre de lignes que les étiquettes vont prendre, et donc de la hauteur, comment mieux les positionner les unes par rapport aux autres. Je sais que dans certains frameworks Java Java, on peut utiliser divers éléments conteneurs, et en HTML ce flux de mise en page serait la configuration par défaut, mais je ne trouve rien qui semble faire l'affaire. Est-ce que je peux le faire dans Interface Builder, ou est-ce que cela doit être fait par programme?Comment gérer la hauteur UILabel inconnue et son effet sur les étiquettes sous Interface Builder?

Merci pour votre aide ..

Edit:

J'ai maintenant la réponse, bien qu'il ne soit pas parfait. J'ai deux labels, titleLabel ci-dessus descLabel. Voilà comment je parvins:

titleLabel.text = [data objectForKey:@"title"]; 
descLabel.text = [data objectForKey:@"description"]; 

CGSize s; 
s.width = descLabel.frame.size.width; 
s.height = 10000; 



titleLabel.frame = CGRectMake(titleLabel.frame.origin.x, 
          titleLabel.frame.origin.y, 
          titleLabel.frame.size.width, 
          [[data objectForKey:@"title"] sizeWithFont:titleLabel.font constrainedToSize: s lineBreakMode:titleLabel.lineBreakMode].height 
          ); 


descLabel.frame = CGRectMake(descLabel.frame.origin.x, 
          titleLabel.frame.origin.y + [[data objectForKey:@"title"] sizeWithFont:titleLabel.font constrainedToSize: s lineBreakMode:titleLabel.lineBreakMode].height + 10, 
          descLabel.frame.size.width, 
          [[data objectForKey:@"description"] sizeWithFont:descLabel.font constrainedToSize: s lineBreakMode:descLabel.lineBreakMode].height 
          ); 

weffew

Répondre

Questions connexes