NoChat

NoChat is a lightweight chat UI framework which has no particular faces. The projects in Examples directory show you how to use this framework to implement a text game with user interface like Telegram or WeChat very easily. You can custom your own with NoChat :].

NoChatv

NoChat

Features

  • Inverted mode
  • Adaptive user interface
  • Custom chat items and input panel
  • Simple MVC pattern
  • Supports both Objective-C and Swift

Requirements

  • iOS 8.0+
  • Xcode 8.2.1 or above

Install

NoChat supports multiple methods for install.

CocoaPods

Include the following in your Podfile:

target 'TargetName' do
    pod 'NoChat', '~> 0.3'
end

Carthage

Include the following in your Cartfile:

github "little2s/NoChat" ~> 0.3

Manually

Download and drop /NoChat/NoChat folder in your project.

Architecture

Model

  • <NOCChatItem>

Views

  • NOCChatContainerView
  • NOCChatInputPanel
  • NOCChatCollectionView
  • NOCChatCollectionViewLayout
  • NOCChatItemCell
  • <NOCChatItemCellLayout>

ViewController

  • NOCChatViewController

Usage

Objective-C

Import the framework.

#import <NoChat/NoChat.h>

You can create a subclass of NOCChatViewController, and provide the data.

@interface TGChatViewController : NOCChatViewController
    // ...
@end

@implementation TGChatViewController

    // Overrides these three methods below to provide basic classes.
    + (Class)cellLayoutClassForItemType:(NSString *)type
    {
        // ...
    }

    + (Class)inputPanelClass
    {
        // ...
    }

    - (void)registerChatItemCells
    {
        // ...
    }
        
}

Implement your business in this subclass. You may update layouts property through
these there methods provide by super class:

  • insertLayouts:atIndexes:animated:
  • deleteLayoutsAtIndexes:animated:
  • updateLayoutAtIndex:toLayout:animated:

And I also suggest you custom the view controller of chat with the protocols provide by NoChat.
I mean you can write your own ChatViewController without NOCChatViewController.
Source code is mind, not just code, I think.

Swift

Import the framework.

import NoChat

You can create a subclass of NOCChatViewController, and provide the data.

class TGChatViewController: NOCChatViewController {

    // Overrides these three methods below to provide basic classes.
    override class func cellLayoutClass(forItemType type: String) -> Swift.AnyClass? {
        // ...
    }
    
    override class func inputPanelClass() -> Swift.AnyClass? {
        // ...
    }
    
    override func registerChatItemCells() {
        // ...
    }
    
}

Implement your business in this subclass. The same way as description in Objective-C section above.

GitHub