JSMessagesViewController 4.0.5

JSMessagesViewController 4.0.5

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布时间最后发布2016年1月

Jesse Squires 维护。



license MIT

iPhone 和 iPad 的消息 UI。

JSMessagesViewController 是一个 UIViewController 子类,与 iOS Messages 应用非常相似。

消息截图 1     消息截图 2

Screenshots/ 目录中查看更多 截图

功能

  • 高度可定制
  • 任意消息大小
  • 复制 & 粘贴消息
  • 支持群组消息
  • 数据检测器(识别电话号码、链接、日期等)
  • 时间戳
  • 头像
  • 字幕
  • 大量气泡样式,或者使用您自己的!
  • 向下滑动以隐藏键盘
  • 在您输入时动态调整输入文本视图的大小
  • 流畅的动画
  • 自动启用/禁用发送按钮(如果文本视图为空或不是)
  • 发送/接收声音效果
  • Storyboards 支持(如果这样使用的话)
  • 适用于 iPhone 和 iPad 的通用版

要求

安装

从源代码

  • JSMessagesViewController/ 文件夹拖到您的项目中
  • 下载 JSQSystemSoundPlayer 并按照其安装说明操作
  • QuartzCore.framework 添加到您的项目中

ARC 太酷了吗?

  • 在目标设置 > 编译设置 > 编译源文件中,将 -fobjc-arc 编译器标志添加到您的项目中的所有源文件。

开始使用

设置你的模型

你的模型对象应遵循JSMessageData协议。但是,如果您愿意,可以使用提供的JSMessage类来用于您的模型对象。

设置你的视图控制器

  1. 继承JSMessagesViewController
  2. 遵循<JSMessagesViewDelegate, JSMessagesViewDataSource>协议
  3. 实现JSMessagesViewDelegate协议
  4. 实现JSMessagesViewDataSource协议
  5. 实现tableView: numberOfRows:方法,该方法来自UITableViewDataSource协议
  6. 设置你的viewDidLoad如下
- (void)viewDidLoad
{
    self.delegate = self;
    self.dataSource = self;
    [super viewDidLoad];

    [[JSBubbleView appearance] setFont:/* your font for the message bubbles */];

    self.title = @"Your view controller title";

    self.messageInputView.textView.placeHolder = @"Your placeholder text";

    self.sender = @"Username of sender";
}

显示你的视图控制器

  1. 程序化或通过Storyboard显示您派生的视图控制器。您的派生应该是UINavigationControllerrootViewController,或者已现有的导航堆栈上传递。

  2. 显示您的视图时,您可能想显示最新消息:(这不是默认行为

// Scroll to the most recent message before view appears
- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    [self scrollToBottomAnimated:NO];
}

有问题吗?

  1. 成为一个酷炫的程序员混蛋阅读该破文档。是的,有该破文档!而且它会及时更新。这有多甜?非常甜
  2. 查看包含的演示:JSMessagesDemo.xcworkspace。打开前不要忘记运行pod install
  3. 还需要帮助?没关系!只需创建一个新的问题,并添加问题标签
  4. 如果您需要帮助,请不要给我发电子邮件但我真的很想给你发邮件。为什么我不能?
    • 创建一个问题是您和社区更好的选择,因为它提供了更好的透明度。
    • 我经常很忙,可能不会及时回复。
    • 使用此库并关注此存储库的人可能能够更快地回答您的问题。
    • 其他人可能也有类似的问题,也需要一个答案。
    • 此库的用户可以搜索早期提出的问题。

文档

文档可通过此处通过CocoaDocs获得。感谢@CocoaDocs

捐赠

通过Square Cash支持此开源控制库的开发。

发送$1 仅仅是想说谢谢!

发送$5 这个控件很棒!

发送$10 这彻底节省了我的时间!

发送$25 我想要新功能!

发送$50 我喜欢这个项目!

定制

  • 您可以通过实现可选的代理方法 configureCell: atIndexPath: 来定制单元格的几乎所有属性。
- (void)configureCell:(JSBubbleMessageCell *)cell atIndexPath:(NSIndexPath *)indexPath
{
    if ([cell messageType] == JSBubbleMessageTypeOutgoing) {

        // Customize any UITextView properties
        cell.bubbleView.textView.textColor = [UIColor whiteColor];

        if ([cell.bubbleView.textView respondsToSelector:@selector(linkTextAttributes)]) {
            NSMutableDictionary *attrs = [cell.bubbleView.textView.linkTextAttributes mutableCopy];
            [attrs setValue:[UIColor blueColor] forKey:UITextAttributeTextColor];

            cell.bubbleView.textView.linkTextAttributes = attrs;
        }
    }

    // Customize any UILabel properties for timestamps or subtitles
    if (cell.timestampLabel) {
        cell.timestampLabel.textColor = [UIColor lightGrayColor];
        cell.timestampLabel.shadowOffset = CGSizeZero;
    }

    if (cell.subtitleLabel) {
        cell.subtitleLabel.textColor = [UIColor lightGrayColor];
    }

    // Enable data detectors
    cell.bubbleView.textView.dataDetectorTypes = UIDataDetectorTypeAll;
}
  • 通过 UIAppearance 来设置您消息气泡的字体。
[[JSBubbleView appearance] setFont:[UIFont systemFontOfSize:16.0f]];
  • 使用 JSBubbleImageViewFactory 定制您的消息气泡。

  • 使用 JSAvatarImageFactory 定制您的头像。

如何贡献

请遵循这些甜蜜的 贡献指南

致谢

@jesse_squires 创建,编程的混蛋

使用 @0xced / iOS-Artwork-Extractor 提取资源。

最初灵感来自 @soffes / SSMessagingViewController

感谢本项目所有 贡献者

@michaelschultz 设计的方形消息气泡。

关于

我最初为在 Hemoglobe 的用户之间发送私密消息而开发这个控件。

出乎意料的是,消息传递是iOS开发和用户都希望拥有的流行功能。因此,我在业余时间支持这个项目,并添加了很多Hemoglobe从未需要的功能。

查看我的其他作品 Hexed Bits

使用此控件的应用

Hemoglobe

Loopse

Oxwall Messenger

FourChat

Quick Text Message

为开发者准备的库

联系我,以您的应用在此列出。

相关项目

SSMessagingViewController

AcaniChat

UIBubbleTableView

SPHChatBubble

MIT许可证

您可以根据您的要求自由使用此软件。 无需归功,但非常感激。

版权所有 © 2013 Jesse Squires

本软件及关联文档(以下简称“软件”)的使用,经授予无条件的许可,任何获得本软件副本的个人可以不受限制地处理该软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可以及/或销售软件副本,并允许将软件提供给他人进行上述操作,但需遵守以下条件

上述版权声明和本许可声明应包含在软件的任何副本或实质部分中。

软件按“原样”提供,不接受任何形式的担保,无论是明示的、暗示的还是其他形式的担保,包括但不限于适销性、适用于特定目的和不侵犯知识产权的担保。在任何情况下,作者或版权所有者不对任何索赔、损害或任何其他责任负责,无论因合同行为、侵权行为或其他原因产生,无论与软件本身、使用或对软件的任何其他操作有关。

Bitdeli Badge