2009-09-29 9 views
1

J'ai une Uitextview qui est remplie avec un fichier texte. J'ai un contrôle sur la page qui permet à l'utilisateur d'activer et de désactiver la pagination. J'ai un problème où la ligne du haut et/ou du bas du texte est parfois "divisée en deux" de sorte que vous ne pouvez voir que la moitié supérieure ou inférieure de la ligne. Je crois que le code ci-dessous devrait le réparer. Le code obtient la hauteur de la ligne du texte et la hauteur du cadre, détermine le nombre de lignes visibles sur l'écran et crée une nouvelle hauteur de cadre de façon à l'adapter. Bien que le cadre soit redimensionné, il «coupe» toujours la ligne du haut et/ou du bas. Quelqu'un a des suggestions? Est-ce que mes mathématiques sont fausses?iphone UitextView Texte coupé

Merci !!!

- (void)fitText 
    { 

      CGFloat maximumLabelHeight = 338; 
      CGFloat minimumLabelHeight = 280; 

      CGSize lineSize = [theUiTextView.text sizeWithFont:theUiTextView.font]; 
      CGFloat lineSizeHeight = lineSize.height; 
      CGFloat theNumberOfLinesThatShow = theUiTextView.frame.size.height/lineSize.height; 

      //adjust the label the the new height 
      theNumberOfLinesThatShow = round(theNumberOfLinesThatShow); 

      CGFloat theNewHeight = lineSizeHeight * theNumberOfLinesThatShow; 

      if (theNewHeight > maximumLabelHeight) 
     { 
      theNumberOfLinesThatShow = theNumberOfLinesThatShow - 1; 
      theNewHeight = lineSizeHeight * theNumberOfLinesThatShow; 
     } 
     if (theNewHeight < minimumLabelHeight) 
     { 
      theNumberOfLinesThatShow = theNumberOfLinesThatShow + 1; 
      theNewHeight = lineSizeHeight * theNumberOfLinesThatShow; 
     } 

      //adjust the label the the new height. 
      CGRect newFrame = theUiTextView.frame; 
      newFrame.size.height = theNewHeight; 
      theUiTextView.frame = newFrame; 
} 

Répondre

1

UIScrollView (et UITextView est un UIScrollView) semble utiliser un insert 8-pixel fixe des deux côtés. Cela semble être indépendant de l'alignement ou de la taille de la police. Donc, je pense que ce qui vous manque ici est le facteur de fudge de 16,0 - voir this question.

Questions connexes