Message-Blasen berechnen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Message-Blasen berechnen

    Hallo,

    Ich habe eine Chat App gebaut. Wie bei anderen Messaging Apps wird die größe der Message-Blasen an den verfassten Text angepasst. Das funktioniert soweit einwandfrei, jedoch wird bei mir die Font des UITextViews in der Blase nicht zu 100% scharf dargestellt.
    Anscheinend liegt das an den Berechnungen bzw. dem Resizing des UITextViews (dessen Größe ebenfalls berechnet wird). Laut anderen Beiträgen zu dem Thema sollte das Problem gelöst werden, indem man die Größe des CGRects vor dem Setzen des Frames rundet. (Deshalb das .integral)
    Leider ist die Schrift bei mir dennoch unscharf.

    Hat jemand eine Lösung für dieses Problem, oder kennt jemand einen besseren Weg, die Blasen zu berechnen?

    Hier mein Code in der willDisplayCell:

    C-Quellcode

    1. let estimatedFrame = NSString(string: message.message!).boundingRect(with: CGSize(width: self.view.frame.size.width*0.65, height: 10000), options: NSStringDrawingOptions.usesFontLeading.union(.usesLineFragmentOrigin), attributes:[NSFontAttributeName: UIFont(name:FONT_REGULAR,size:16)!], context: nil)
    2. var frame = theCell.cellBackgroundView.frame.integral
    3. frame.size.width = estimatedFrame.width+33
    4. frame.size.height = estimatedFrame.height+19
    5. theCell.cellBackgroundView.frame = frame.integral
    6. var textviewframe = theCell.messageTextView.frame.integral
    7. textviewframe.size.width = estimatedFrame.width+11
    8. textviewframe.size.height = estimatedFrame.height+19
    9. theCell.messageTextView.frame = textviewframe.integral
    Um zu zeigen was hiermit gemeint ist (das Screenshot ist wohl zu unscharf, um die Unschärfe der Schrift zu erkennen):

    Screen Shot 2017-09-27 at 17.55.37.png


    Merci :)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von specialized ()

  • Ein UITextViews ist ja eher zum Editieren, als zur reinen Ausgabe von Text gedacht. Da könntest Du noch eher ein UILabel anstelle des UITextViews verwenden. Mit sizeThatFits: kannst Du auch die passende Größe des UILabel für den darzustellenden Text berechnen.

    Alternativ versuche mal, anstelle eines UITextViews, einen CustomView zu verwenden und den Text dann einfach in der drawRect: Methode zu zeichnen.
  • MCDan schrieb:

    Ein UITextViews ist ja eher zum Editieren, als zur reinen Ausgabe von Text gedacht. Da könntest Du noch eher ein UILabel anstelle des UITextViews verwenden. Mit sizeThatFits: kannst Du auch die passende Größe des UILabel für den darzustellenden Text berechnen.

    Alternativ versuche mal, anstelle eines UITextViews, einen CustomView zu verwenden und den Text dann einfach in der drawRect: Methode zu zeichnen.
    Den UITextView verwende ich, weil URLs klickbar sein müssen. Hab es aber auch mit einem UILabel getestet, und die Schrift ist genau so unscharf.

    Gegen das Zeichnen spricht eben auch, dass URLs erkennt werden müssen...