你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iOS開發 - 第05篇 - 項目 - 10 - 發微博

iOS開發 - 第05篇 - 項目 - 10 - 發微博

編輯:IOS開發綜合

1、點擊表情

1.1 表情放大界面

\

1.2 實現思路

1>監聽表情按鈕點擊

2>同一時間只能顯示一個放大鏡,創建一個即可,不用重復創建

3>放大鏡應該作為一個整體HWEmotionPopView,而且比較簡單,用XIB來實現即可,提供類方法

4>在HWEmotionPageView中懶加載HWEmotionPopView

注1:HWEmotionPopView添加位置問題,若添加在HWEmotionPageView上面,則會被上面工具台擋住,因此,應該添加到最上面的窗口UIWindow,而且不是keyWindow,因為彈出的鍵盤也是一個UIWindow,覆蓋在keyWindow之上,keyWindow是後面的主控制器!!!

注2:由於添加到UIWindow上,坐標系發生變化,要注意坐標系轉換

 

\

5>設置HWEmotionPopView裡面的按鈕表情,需要在點擊按鈕的時候,拿出按鈕對應的Emotion模型,設置給HWEmotionPopView

方法一:給每一個表情按鈕綁定tag,根據tag取出self.emotions數組中的Emotion模型;

方法二:

1. 一個按鈕對應一個表情模型,應該自定義按鈕,給每個按鈕一個表情模型,以後可以直接根據按鈕取出表情模型,且重寫按鈕中表情模型的setter方法,將png還是code設置按鈕顯示封裝到裡面

2. 設置HWEmotionPopView裡面的按鈕表情也只需要傳給其一個表情模型即可,XIB裡面的按鈕對應自定義表情按鈕

\

\

HWEmotionPageView表情按鈕點擊

 

\

2、插入表情

2.1 小處理

1>點擊表情取消高亮

方法一:重寫按鈕的setHighlighted:方法

方法二:self.adjustsImageWhenHighlighted= NO;按鈕高亮的時候,不要去調整圖片(不要調整圖片會灰色)

2>popView消失

GCD延時後移除

 

2.2插入表情思路

實現:點擊表情按鈕往控制器中的textView插入表情

方法一:使用代理,但是層級結構太深,要拿到textView只能通過控制器,需要不斷使用代理傳遞出去:

HWEmotionPageView——HWEmotionListView——HWEmotionKeyboard——HWComposeViewController——HWEmotionTextView

方法二:使用通知,由系統管理,表情按鈕點擊發送通知即可,控制器接收通知

 

\

\

關鍵:使用NSAttributedString進行圖文混排!!!

注1:圖文混排最好放在textView中處理,不要直接在控制器中處理

注2:不應該直接將處理表情文字的操作放到WBTextView中,否則直接會和HWEmotion關聯,導致WBTextView只能用在當前項目中,應該再自定義一個textView,繼承自WBTextView,專門用來處理表情文字

\

3、封裝TextView

1>寫一個UITextView的分類,封裝insertAttributeText:方法,可以插入帶屬性文字

注:但是關於字體的設置不應該封裝到裡面

 

\

\

2>重寫setAttributeText方法,保證輸入表情,刪除占位符

 

\

3>添加刪除按鈕

注意:在initWithFrame:方法中添加按鈕,布局時第一個按鈕是刪除按鈕,不是表情按鈕,注意subViews

4、BUG修復

4.1 刪除操作

\

4.2 鍵盤上面工具條位置

\

問題:當使用中文鍵盤後,鍵盤高度會變高(提示中文),再次點擊表情鍵盤時,工具條位置不會改變

原因:設置了switchingKeybaord

解決辦法:讓工具條對新彈出的鍵盤做出反應!!!

 

\

即:在舊鍵盤退出的時候,不要改變frame,再新鍵盤彈出的時候再根據新鍵盤做出反應

 

4.3 表情文字變小

在插入表情圖片的時候,表情圖片會變小,文字也會變小

原因:在插入表情的時候,設置字體,在插入表情之後操作

 

\

若放在插入屬性文字裡面操作就不會出現變小的情況,即先設置好字體,再給self.attributedText賦值就行

 

\

即:一旦self.attributedText= attributedText;後再取出來在外面設置字體就不好使!

關鍵原因:self.attributedText的屬性為copy屬性,為拷貝屬性,外面文本改了不會影響到裡面的文本

但是將設置字體的方法放到裡面又不太合適,因為該方法只是用來插入屬性文字,不需要管字體

解決辦法:使用block,將設置字體的代碼放到block裡面!!!

 

\

\

5、發帶表情微博

方法:將所有圖片表情轉為文字描述,發給新浪

1>HWEmotionTextView中提供一個方法,將textView中所有圖片文字,轉為NSString

 

\

關鍵:遍歷attributedText,找出所有的圖片表情,將其轉化為文字描述!!!

注:現在的attch只能拿到設置的UIImage,為了從attch中拿到當初設置emotion中的表情文字描述,即要實現拿到attach就能拿到對應的emotion,可以自定義HWEmotionAttachment,增加一個emotion屬性!!!

 

2>自定義HWEmotionAttachment

 

\

\

6、長按表情

實現:長按表情會彈出對應的表情popView,再拖動時候顯示相應表情popView

方法:給pageView增加長按手勢

注1:將顯示PopView的代碼封裝到WBEmotionPopView中,傳給一個表情按鈕

注2:原先WBEmotionPopView中設置表情模型的方法就可以去掉,直接設置表情按鈕即可

1>HWEmotionPopView

 

\

2>HWEmotionPageView

 

\

\

\

7、表情鍵盤最近標簽頁

注1:要將最近使用的表情存放進沙盒

注2:在表情按鈕點擊或者長按松開的時候存入沙盒

注3:提供一個WBEmotionTool管理表情存儲,取出

 

\

\

注:MJCodingImplementation宏可以替代下面兩個方法

 

HWEmotionPageView中存儲

 

\

HWEmotionKeyboard中讀取

 

\

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved