3

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

这对我来说是什么样的:

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

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

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

这些东西究竟是什么?

我是 iOS 开发的初学者,所以我不太想知道这些东西是什么。此短信应用程序中使用了哪些组件?如果那不是基于表格的表格,那它是什么?我将如何制作像这样位于键盘顶部的页脚并一直增长到顶部的东西?

澄清一下,我不需要在此之后出现的实际聊天气泡屏幕。我只是想将它重新创建为一个简单的发送消息视图。我不需要聊天气泡的预构建包。我只需要重新创造这种外观,真的。

4

3 回答 3

1

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

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

于 2013-01-02T21:54:24.177 回答
1

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

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

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

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

我根本没有评价它。

于 2013-01-02T22:04:44.777 回答
1

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

收件人名单

  • AUITextField其框架被限制在收件人“气泡”和添加按钮之间(并且每次添加收件人时都会调整大小)
  • 每个收件人“气泡”的一组自定义UIView容器,其中包含收件人名称,覆盖在包含绿色“气泡”UILabel的可拉伸顶部(有关创建可拉伸图像的帮助,请参阅此内容)UIImageView
  • AUIButton为添加按钮
  • 所有这些都包含在 a 中UITableViewCell(如果您不打算同时包含消息列表,您可能不需要/不想这样做)

消息字段

  • AUITextView用于文本输入,在添加或删除新行时调整其框架大小,并在其大小(加上键盘大小)到达工具栏顶部时开始滚动
  • AUIButton用于发送按钮
  • AUIButton为相机按钮
  • 全部包含在一个 customUIView中,它被实现为屏幕底部的页脚(当然是在键盘顶部)

同样,这只是我如何设计它的粗略草图——这可能不是 Apple 的做法,也不一定适用于您的用例。

于 2013-01-03T03:04:29.773 回答