IOS1:1完美仿微信聊天表情鍵盤,聊天+朋友圈鍵盤。ios微信表情轉(zhuǎn)譯??催@里就夠了

Github鏈接

簡介:

  • 任何底部有輸入欄的界面,都可以用本庫,兼容所有場景

  • 聊天表情鍵盤:左->語音按鈕,中間->輸入條+按住錄音,右->表情按鈕+拓展按鈕;每個按鈕都可以隱藏或顯示;

  • 朋友圈表情鍵盤:平時不顯示底部輸入欄,點擊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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容