【iOS】自訂表格情的實現

來源:互聯網
上載者:User

標籤:lis   alt   info   set   動態   修改   img   直接   動態改變   

現在很多App都有自己的自訂的表情,用戶端可能要實現自己定表情的選擇、發送和顯示,這裡我介紹一種簡單的自訂表格情的實現思路和代碼。
以下介紹基本可以實現聊天中對自訂表格情的需求,可結合來理解:

資源準備:

  • 自訂表格情圖片的命名。
  • 每個自訂表格情的意思。
  • emtionMeans.plist:key--表情選取器每個表情對應的tag值,value--每個表情的意思。
  • emtions.plist:key--每個表情的意思,value--每個表情對應的圖片。

實現邏輯:

  • 初始化表情選取器,主要根據以上兩個plist表格相互轉換來擷取需要的東西。
    建立一個EmojiView繼承自UIVIew,主要代碼如下:

執行個體化一個EmojView對象即可得到一個自訂表格器的選取器。
接下來我們需要一個輔助器,用來判斷某個字串是不是表情字串以及某一串字串中是否包含表情。因為現實表情需要用到富文本,一般對記憶體和效能的消耗比較大,對於不含表情的字串我們還是直接UILabel來顯示更好些,特別是像聊天這樣的布局。顯示某條聊天訊息之前,我們先判斷該訊息中是否包含表情字串,在這裡我用的是[]來識別的,如果包含[],我們再進一步通過emtionMeans.plist中表情的含義來對比,看這個[]中的內容是否屬於表情,如果這兩者都滿足,則表示該訊息中含有自訂表格情。
輔助器主要代碼:

最後我們需要一個可以顯示我們的表情的Label,iOS內建的UILabel顯然不能直接用,這裡我用到了一個第三方MLEmojiLabel,用它來做自訂表格情的展示。直接用也會有問題,因為自訂表格情的資源不同,要顯示自己的話需要做修改,另外也做了一些最佳化(直接從網上下載的第三方在返回經過表情識別處理的Attributed字串的方法中對錶情字串的識別度不是很精準)。
不過調用很方便,執行個體化MLEmojiLabel直接調用下面的方法即可顯示自己的自訂表格情:

[self.emojiLabel setEmojiText:self.emojiString];

做聊天的話可能需要動態改變Label的高度,需要調用上面的方法之後調用一下下面的方法即可:

CGSize textSize = [self.emojiLabel sizeThatFits:CGSizeMake(SCREEN_WIDTH - 160, size.height)];

以上的代碼可根據固定的寬度來擷取當前的高度。
完整代碼點擊這裡擷取。
demo效果:

【iOS】自訂表格情的實現

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.