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 :].
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.