簡介:
任何底部有輸入欄的界面,都可以用本庫,兼容所有場景
聊天表情鍵盤:左->語音按鈕,中間->輸入條+按住錄音,右->表情按鈕+拓展按鈕;每個按鈕都可以隱藏或顯示;
朋友圈表情鍵盤:平時不顯示底部輸入欄,點擊cell時候再顯示輸入欄;
基礎(chǔ)功能:
- ?UI仿微信聊天底部輸入欄,表情和鍵盤切換動畫平滑,全程60幀
- ?底部輸入欄可以在需要時候再顯示,各種場景(
評論列表場景或朋友圈場景或發(fā)微博場景) - ?
表情面板+拓展面板+底部輸入條+語音條,各個模塊都不會互相import,完美解耦 - ?每個模塊都可以自定義,且都可以自由替換,也都可以拉出來當(dāng)做
獨立的模塊 - ?無內(nèi)存泄漏。代碼清晰明確,注釋量比代碼都多
- ?兼容
橫屏模式,兼容黑夜模式,兼容導(dǎo)航欄半透明或不透明 - ?
兼容Swift,提供Swift Demo - ?輸入框直接顯示表情圖片??,而不是[微笑]
進階功能:
- ?提供了文本"[微笑]"解析成圖片的方法,并在ios15以下采用了緩存機制,加快解析速度
- ?提供了ios15下,剛進入
聊天界面時候tableView需要滾到底部導(dǎo)致導(dǎo)航欄閃現(xiàn)的問題解決方案 - ?輸入文字發(fā)生換行時候的動畫和 "發(fā)送"文字時候輸入框動畫分別采用不同的流程機制,媲美微信
效果gif圖(Gif圖有點卡,實際運行一點都不卡):




安裝
先在終端里搜索 pod search QKeyboardEmotionView
如果搜索不到2.0版本,需要更新你電腦的pod倉庫,以下是更新步驟:
- 先
pod repo update —verbose更新你本地電腦的pod倉庫。然后再搜索一次試試看 - 如果還是搜索不到,執(zhí)行
rm ~/Library/Caches/CocoaPods/search_index.json。再搜索就OK了
OC 調(diào)用方式:
- (void)viewDidLoad {
[super viewDidLoad];
// 初始化輸入工具條,frame可以先這樣臨時設(shè)置,下面的addBottomInputBarView方法會重置輸入條frame
// 如果你想要自定義輸入條View,請參考TextFieldViewController代碼
_inputView = [[QInputBarView alloc] initWithFrame:CGRectMake(0,0,self.view.frame.size.width,UIInputBarViewMinHeight)];
_inputView.dataSource = self;
_inputView.delegate = self;
//keyboard管理類,用來管理鍵盤,各大面板的切換
_keyboardManager = [[QKeyboardManager alloc] initWithViewController:self];
_keyboardManager.dataSource = self;
//因為addBottomInputBarView方法會立刻觸發(fā)delegate,所以這里需要先設(shè)置delegate
_keyboardManager.delegate = self;
//將輸入條View添加到ViewController;YES表示輸入條平時不顯示(比如朋友圈);NO表示平時也顯示(比如聊天)
[_keyboardManager addBottomInputBarView:_inputView belowViewController:NO];
//把輸入框(如果有的話)綁定給管理類
[_keyboardManager bindTextView:_inputView.inputTextView];
}
Swift 調(diào)用方式:
override func viewDidLoad() {
super.viewDidLoad()
// 初始化輸入工具條,frame可以先這樣臨時設(shè)置,下面的addBottomInputBarView方法會重置輸入條frame
// 如果你想要自定義輸入條View,請參考TextFieldViewController代碼
bottomInputView = QInputBarView(frame: CGRect.init(x: 0, y: 0, width: view.frame.size.width, height: CGFloat(UIInputBarViewMinHeight)))
bottomInputView.delegate = self;
//keyboard管理類,用來管理鍵盤,各大面板的切換
keyboardManager = QKeyboardManager(viewController: self);
keyboardManager.dataSource = self;
//因為addBottomInputBarView方法會立刻觸發(fā)delegate,所以這里需要先設(shè)置delegate,再addBottomInputBarView
keyboardManager.delegate = self;
//將輸入條View添加到ViewController;YES表示輸入條平時不顯示(比如朋友圈);NO表示平時也顯示(比如聊天)
keyboardManager.addBottomInputBarView(bottomInputView, belowViewController: belowViewController())
//把輸入框(如果有的話)綁定給管理類
keyboardManager.bindTextView(bottomInputView.inputTextView)
}
參數(shù)配置
@property (nonatomic, strong) UIColor *inputBarBackgroundColor;//輸入條顏色,默認仿微信的灰色
@property (nonatomic, strong) UIColor *inputBarBoardColor;//輸入條上方的的那一條細橫線的顏色
@property (nonatomic, strong) UIColor *textColor;//輸入欄textview的顏色
@property (nonatomic, strong) UIColor *textViewBackgroundColor;//輸入欄textview的背景顏色,默認白色
@property (nonatomic, strong) UIColor *recordButtonTitleColor;//按住說話按鈕的字體顏色
@property (nonatomic, assign) BOOL voiceButtonHidden; //是否隱藏發(fā)送語音 default is NO
@property (nonatomic, assign) BOOL extendButtonHidden; //是否隱藏發(fā)送多媒體 default is NO
@property (nonatomic, assign) BOOL emotionButtonHidden; //是否隱藏發(fā)送表情 default is NO
/// 點擊鍵盤右下角的按鈕是否是發(fā)送,NO表示普通回車換行,YES表示回調(diào)Delegate的Send方法
@property (nonatomic, assign) BOOL keyboardSendEnabled; // default is YES
導(dǎo)入方式
pod 'QKeyboardEmotionView'
以后還會有更多好庫開源,求個Star