如何重新创建iOS发送文本消息屏幕?

时间:2013-01-02 20:42:00

标签: ios cocoa-touch

我正在编写一个IRC客户端iOS应用程序。我希望我的“发送消息”UIViewController基本上与内置的iOS文本消息应用程序的发送消息视图完全相同。我正在谈论的观点尤其是当您打开Messages应用程序时看到的视图,然后单击右上角的“新消息”图标。它看起来像这样:

这对我来说是什么样的:

这看起来像UIViewController,顶部有UIToolbar。除此之外,我无法弄清楚剩下的是什么。这看起来不像基于UITableView的表单,因为我没有看到空行分隔符,并且该区域不允许您用手指拖动它,就像您希望在表格视图中看到的那样。所以看起来像某种容器,带有UILabelUITextField和图片或按钮,用于加号。

用于键入的文本区域看起来像某个页脚区域内的UITextView,它垂直增长直到到达“To:”标题的底部边缘,此时文本区域才开始滚动而不是扩展。

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

实际上这些是什么?

我是iOS开发的初学者,所以我不太了解这些东西是什么。此短信应用中使用了哪些组件?如果那不是基于表格的形式,那么它是什么?我如何制作类似于键盘顶部的那个页脚,直到它到达顶部为止?

为了澄清,我不需要在此之后发生的实际聊天气泡屏幕。我只想将其重新创建为一个简单的发送消息视图。我不需要预先建立的聊天气泡包。我只需要重新创建这个外观。

3 个答案:

答案 0 :(得分:1)

Apple没有为这个问题提供任何统一的解决方案;我知道,因为我们在应用程序中遇到了同样的要求。 Three20框架确实提供了我们一次使用的解决方案;但是Three20显然已经不再维护了,它给我们带来了很多麻烦,我们将它从我们的构建中移除了。

最终我们从头开始构建您正在寻找的视图(或非常类似的东西)。这很困难,我们的代码仍然不漂亮。我猜想Apple和消息和邮件应用程序中的代码也不是很漂亮,或者它们会把它变成API。也许他们有一天会这样做,但是现在你已经接受了痛苦而且自己动手。

答案 1 :(得分:1)

Apple没有为这个问题提供任何统一的解决方案;我知道,因为我们在应用程序中遇到了同样的要求。 Three20框架确实提供了我们一次使用的解决方案;但是Three20显然已经不再维护了,它给我们带来了很多麻烦,我们将它从我们的构建中移除了。

最终我们从头开始构建您正在寻找的视图(或非常类似的东西)。这很困难,我们的代码仍然不漂亮。我猜想Apple和消息和邮件应用程序中的代码也不是很漂亮,或者它们会把它变成API。也许他们有一天会这样做,但是现在你已经接受了痛苦而且自己动手。

更新:请在此处查看另一个开源解决方案。

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

我根本没有评估它。

答案 2 :(得分:1)

我不能确切地说苹果选择使用什么来实现这些元素(我确信有很多方法可以做到这些),但这是我建议的每一个:

收件人列表

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

消息字段

  • 文本输入的UITextView,在添加或删除新行时调整其帧大小,并在其大小(加上键盘大小)到达工具栏顶部时开始滚动
  • 发送按钮的UIButton
  • 相机按钮的UIButton
  • 全部包含在自定义UIView中,在屏幕底部实现为页​​脚(当然,在键盘顶部)

同样,这只是我如何设计它的草稿 - 这可能不是Apple的方式,并且可能不一定适用于您的用例。