2009-04-16 11 views
1

Ich habe eine Linie zu bestimmen, wie:Der beste Weg, den Zeilenumbruch eines NSString in einem UILabel

 
UIImageView UILabel1 
      UILabel1 
UILabel2 

Wenn es:

 
-Image- This is simply a test 
-Image- but I want to know how 
to separate the two lines. What 
to do here? 

Die beste Weise, die ich auf dem iPhone zu implementieren Abbildung könnte, ist Eine einfachere Möglichkeit, dies mit den UI-Elementen zu tun - ich bin ganz Ohr. Ansonsten versuche ich herauszufinden, wo der Text in UILabel1 ohne Versuch und Irrtum mit sizeWithFont endet. Ein komplizierterer Weg wäre, die Größe jedes Zeichens in dieser Schriftgröße mit sizeWithFont zu ermitteln und alles zusammen hinzuzufügen (herauszufinden, wo das Wort in Zeile 1 von UILabel1 und dann auch in Zeile2 umbrochen wird). Das fühlt sich an wie ein schwieriger Weg, ein einfaches Problem zu lösen. Wer kennt den einfachen Weg?

+0

Meinen Sie wollen eigentlich, dass der Text um das Bild fließt (dh, beginnen Sie bei Zeile 1, rechts vom Bild, weiter auf Zeile 2, rechts neben dem Bild, dann auf Zeile 3 links unter dem Bild)? – philsquared

Antwort

1

Vielleicht ist dies nicht die Antwort, die Sie suchen, aber diese Art von Layout ist einfacher mit einem WebView.

Aus Effizienzsicht ist UILabel Text Rendering sowieso über WebViews implementiert.

This article by Craig Hockenberry schlägt vor, dass der Versuch, zu

Verwendung Metriken und Linie zu brechen, dass [Spiel] diejenigen Implementierung in UILabel der verwendeten [...] bei weitem nicht perfekt

ist und bestätigt auch, dass UILabel Verwenden Sie WebViews unter der Haube (es ist auch leicht in einem Shark Dump einer textintensiven App zu sehen).

+0

Ich stimme zu, dass es in einem UIWebView einfacher ist. Ich glaube nicht, dass UILabels WebView benutzt (weißt du wie teuer ein WebView ist?). Sie verwenden drawTextInRect, um die Zeichenfolge zu zeichnen. (Ich wünschte, das wäre die Antwort - es ist super einfach). Ich habe keine Referenz in Craigs Artikel gesehen (wenn Sie andere Beweise haben - würde gerne c –

+0

Das Zitat in Craigs Artikel ist "UILabel zugrunde liegenden WebView", überprüfen Sie es. Wie gesagt, es ist ziemlich einfach, Webcore-Code zu erkennen, wenn Sie Profil eine App, die viel Text verwendet.WebKit ist Schwergewicht, ich war überrascht zu entdecken, dass sie es auch für UILabels verwenden. – duncanwilcox

1

NSString s = @ "Erste Zeile \ n zweite Zeile \ n letzte Zeile";