我该如何重新创建iOS发送短信界面?

3
我正在编写一款IRC客户端iOS应用。我希望我的“发送消息”UIViewController基本上能够像内置的iOS短信应用程序的发送消息视图一样运行。我特别指的是你打开Messages应用程序并在右上角点击“新消息”图标时看到的那个视图。它看起来像这样:

我看到的是什么:

这看起来像一个带有顶部 UIToolbarUIViewController。除此之外,我无法弄清楚其余部分是什么。这不像是基于 UITableView 的表单,因为我没有看到空的行分隔符,并且该区域不允许您使用手指拖动,就像您在表视图上所期望看到的那样。因此,那看起来像一种容器,其中包含一个 UILabelUITextField 和一个图像或按钮,用于加号。

输入文本的文本区域看起来像是一个 UITextView,位于某种页脚区域内,该区域垂直增长,直到达到“收件人:”标题的底部边缘,此时文本区域开始滚动而不是扩展。

选定人员姓名后面的绿色背景。这是什么?这是自定义的 UILabel,还是绿色最可能是一个图形背景图像?

实际上这些东西是什么?

我是iOS开发的初学者,对这些东西不太熟悉。这个文本消息应用程序使用了哪些组件?如果这不是基于表格的表单,那它是什么?我该如何制作像那样坐落在键盘顶部并增长直至到达顶部的页脚?
为了澄清,我不需要实际的聊天气泡屏幕。我只想将其重新创建为一个简单的发送消息视图。我不需要预先构建的聊天气泡包。我只需要真正地重新创建这个外观。

我认为在你提供的问题中,用户更关心聊天气泡而不是它们之前的功能和外观,而这正是我所需要的。 - Ryan
两个答案都是指向开源聊天客户端的链接,它们都模仿了你想要的消息屏幕,你可以使用其中任何一个来实现你的应用程序。 - gSaenz
3个回答

1

苹果并没有提供任何统一的解决方案来解决这个问题;我知道这是因为我们在我们的应用程序中面临了类似的要求。Three20框架曾经提供了一个解决方案,我们曾经使用过它;但是Three20显然已经不再维护了,它给我们带来了很多麻烦,所以我们将其从我们的构建中删除了。

最终,我们从头开始构建了您正在寻找的视图(或非常相似的视图)。这很困难,我们的代码仍然不太美观。我猜想,苹果在消息和邮件应用程序中的代码也不太美观,否则他们会将其制作成API。也许他们有一天会这样做,但现在你必须接受痛苦并自己去做。


1

苹果并没有提供任何统一的解决方案来解决这个问题;我知道这是因为我们在我们的应用程序中面临了类似的要求。Three20框架曾经提供了一个解决方案,我们曾经使用过它;但是Three20显然已经不再维护了,它给我们带来了很多麻烦,所以我们将其从我们的构建中删除了。

最终,我们从头开始构建了您正在寻找的视图(或非常相似的视图)。这很困难,我们的代码仍然不太美观。我猜想,苹果在消息和邮件应用程序中的代码也不太美观,否则他们会将其制作成API。也许他们有一天会这样做,但现在你必须接受痛苦并自己去做。

更新:在这里查看另一个开源解决方案。

http://cocoacontrols.com/platforms/ios/controls/acanichat

我还没有对其进行评估。


1

我无法确定苹果公司选择使用哪种方法来实现每个元素(我相信有许多方法可以完成其中的一些),但是以下是我为每个元素建议的内容:

收件人列表

  • 一个UITextField,其框架被限制在收件人“气泡”和添加按钮之间(并且每次添加收件人时都会调整大小)
  • 每个收件人“气泡”都有一组自定义的UIView容器,其中包含收件人姓名的UILabel,覆盖在可伸缩的UIImageView上,该UIImageView包含绿色的“气泡”(有关创建可伸缩图像的帮助,请参见this
  • 一个用于添加按钮的UIButton
  • 所有这些都包含在一个UITableViewCell中(如果您不打算包括消息列表,则可能不需要/不想这样做)

消息字段

  • 文本输入使用UITextView,当添加或删除新行时,其框架会被调整大小,并在其大小(加上键盘的大小)达到工具栏顶部时开始滚动
  • 发送按钮使用UIButton
  • 相机按钮使用UIButton
  • 所有内容都包含在自定义的UIView中,该视图作为屏幕底部的页脚实现(但当然位于键盘之上)

再次说明,这只是我设计的一个草稿 - 这可能不是苹果公司的做法,并且可能不适用于您的用例。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接