【问题标题】:Bubble Chat + Emoticon + UITableViewCell泡泡聊天+表情+UITableViewCell
【发布时间】:2010-06-28 07:56:35
【问题描述】:

这是 iPhone 开发的一个问题,我希望有人能指出我应该如何实现这一点的正确方向。

我正在尝试编写一个支持表情符号/笑脸的聊天应用程序。稍后可以弄清楚笑脸/表情图像的存储位置。我认为很少有 iphone 应用程序已经这样做了(即 skype + ebuddy(?)),但不确定他们采用的是什么方法。

搜索后,似乎有几种方法可以做到这一点(我认为):

  • 之前已经讨论过的泡泡聊天风格。 UITableViewController 与自定义 UITableViewCell。对于表情符号,可能需要进行大量计算才能确定将UIImageView 粘贴到每个表情符号的位置。
  • 使用UIWebView 作为整个“窗口”。让它看起来像泡泡聊天。无需对图像笑脸位置进行任何手动计算。

我不知道这两种方法的性能如何,它的复杂程度等等,所以任何 cmets 和指导肯定会有所帮助。干杯

【问题讨论】:

    标签: iphone cocoa-touch uitableview uiwebview


    【解决方案1】:

    如果您使用自定义 UITableViewCell,那么我可能会实现 drawRect: 而不是添加标签和图像。一个可能需要和另一个一样长的时间来实现,但它会表现得更好。

    UIWebView 可能值得一提,但您也必须确保一切看起来都正确无误。我建议不要使用一个大的网页,而是在每个表格视图单元格中简单地放入一个网络视图。

    我个人更喜欢第一种方法,文本的测量和布局不是太复杂,但我从来都不是最终的 HTML 大师。

    【讨论】:

    • 我明白了。我想我必须更好地了解 drawrect 的低级 api,但可以肯定的是,这将使我能够最大程度地控制我显示的内容。哦,男孩会有很多字符串长度/宽度计算。即如果适合 x 宽度,则绘制字符串,否则换行。如果有表情符号,它是否适合等等等等会看看它是怎么回事。谢谢朋友的回复。
    【解决方案2】:

    我同意@Eiko 关于制作自定义 UITableViewCells 的观点,尤其是使用 drawRect 而不是添加标签、图像等。

    如果您使用 UIWebView,您将如何处理更新它?每次发送新文本时完全重新加载?这似乎将成为问题的原因。一旦您进行长时间的对话,重新加载整个 UIWebView 的内容会导致一些闪烁,这在我看来是不可接受的。此外,使用 UIWebView 需要您在内存中拥有每个对话的 2 个完整副本。 1 作为后端数据,1 作为 HTML。在使用 UITableView 的地方,你有你的后端数据,并且只有足够的数据会被复制,一次可以填满 1 个屏幕。

    【讨论】:

    • 如果整个视图是 UIWebView,我不太确定如何处理它。我对 UIWebView 方面还不太熟悉。也许有一种方法可以即时注入 html 代码?如果没有,那么闪烁肯定会发生。 @eiko 所指的另一种方式是每个需要表情符号的聊天项目的 UIWebview。如果您只对至少有 1 个表情的聊天项目这样做,那可能还不错。否则,只是一个自定义的 UITableViewCell。我确实对性能和内存使用有很多担忧。
    • 他可以连接 javascript 并即时更改页面。从好的方面来说,UIWebView 将允许用户使用复制和粘贴,您不太可能在自定义绘制的视图上实现 - 至少不会降低到那种详细程度。
    猜你喜欢
    • 2012-07-31
    • 1970-01-01
    • 2021-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-19
    相关资源
    最近更新 更多