2009-10-21 7 views
2

J'ai une taille fixe UITextView dire largeur et hauteur de 150,150.Comment modifier dynamiquement la taille de la police de texte dans UITextView dans l'iPhone

Le but est d'afficher la pensée du jour. S'il vous plaît noter que la taille doit rester constante et je ne peux pas le changer.

Maintenant La longueur de la chaîne de pensée varie en fonction de la pensée. Ce que je veux faire est de changer la taille de la police du texte pour s'assurer qu'il ne montre aucun espace vide dans UITextView si la longueur est petite ou il ne montre pas le rouleau si c'est plus grand.

Comment modifier la police de UITextView en fonction de la longueur de la chaîne de pensée.

Quel est le problème avec le code suivant:

CGSize size; 
    BOOL run=TRUE; 
    CGSize txtViewSize = self.txt_tipView.frame.size; 
    while(run){ 

     size = [self.txt_tipView.text sizeWithFont:[UIFont systemFontOfSize: currentSize] constrainedToSize:txtViewSize lineBreakMode:UILineBreakModeWordWrap]; 
     if((size.width<=txtViewSize.width) && (size.height<=txtViewSize.height)) 
      run = FALSE; 
     else 
      currentSize--; 
    } 
    self.txt_tipView.font = [UIFont fontWithName:@"Helvetica" size:currentSize];//[UIFont boldSystemFontOfSize:12]; 

Ce qui se passe est la taille du texte dans TextView est toujours 60. C'est chaque ligne a un seul mot.

Répondre

4

Définissez une taille de police implicite, disons la plus grande police acceptable que vous pourriez utiliser. Ensuite, effectuer une mesure de la taille de votre texte:

CGSize size = [text sizeWithFont:[UIFont systemFontOfSize: currentSize] constrainedToSize: maxTextSize lineBreakMode:UILineBreakModeWordWrap]; 

Si la taille que vous obtenez est hors des limites acceptables, ajuster la taille des caractères et répéter. Le maxTextSize devrait être la taille de votre UITextView.

+0

pouvez-vous ajouter un peu plus d'élaboration au code. Comme exactement comment je dois le faire. Je le fais suivant la taille CGSize; \t BOOL run = VRAI; \t CGSize txtViewSize = self.txt_tipView.frame.size; \t tandis que (run) { \t \t size = [self.txt_tipView.text sizeWithFont: [UIFont systemFontOfSize: currentSize] constrainedToSize: txtViewSize lineBreakMode: UILineBreakModeWordWrap]; \t \t if ((size.width <= txtViewSize.width) && (size.height <= txtViewSize.height)) \t \t \t run = FALSE; \t \t sinon \t \t \t currentSize--; Self_tp_tipView.font = [UIFont fontWithName: @ "Helvetica" size: currentSize] \t – rkb

+0

Ça me va. Des problèmes avec ça? – luvieere

+1

Si cela ne fonctionne pas avec un UITextView, vous devriez peut-être le tester avec un UILabel ... c'est-à-dire si la seule fonction que vous attendez de lui est * afficher * la pensée du jour. – luvieere

Questions connexes