runtime的實(shí)際應(yīng)用以及API設(shè)計

今天照例擼代碼,看到如下設(shè)計圖.在設(shè)計圖的上看到有許多的地方都有一個紅色提醒標(biāo)識.于是就想著做一個類似Badge的控件.開始想自定義一個這樣的控件,但是發(fā)現(xiàn)如果要實(shí)現(xiàn)一個類,這樣其他已有的視圖可復(fù)用性太低,最后打算給uiview寫一個cagetory.

設(shè)計API接口的時候就想著如果一個方法里面的參數(shù)過多,就會過度設(shè)計.但是如果參數(shù)太少,可復(fù)用性就差.最后決定用 objc_setAssociatedObject 和 objc_setAssociatedObject 來動態(tài)的為uiview加上badge這樣的屬性.

我們都知道,catagory之所以不能給一個類添加屬性是因?yàn)榫幾g器在最開始就已經(jīng)分配好了內(nèi)存,所以無法在添加任何實(shí)例變量,但是有了runtime,讓一切皆有可能.

具體實(shí)現(xiàn)的代碼如下:




[cellshowBadgeWithStyle:WBadgeStyleNumbervalue:8];

cell.badgeCenterOffset=CGPointMake(-40,22);


還未解決的問題:如果視圖使用autolaoout布局,就無法獲得具體frame,badged就無法出現(xiàn)在右上角,只能出現(xiàn)在左上角.

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

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

  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,413評論 4 61
  • 操場上有積水,走兩三步才有漏過云層的雨滴在臉上。 下了晚自習(xí)回家,即使早離開了學(xué)校公交也沒到,但還是下課前五分鐘就...
    昆瑤君閱讀 318評論 0 0
  • 前言 在開發(fā)中有時會碰到旋轉(zhuǎn)屏幕的需求,例如直播時橫豎屏推流,這里我使用的一種方法時用純代碼強(qiáng)制翻轉(zhuǎn),其他晚上方法...
    calary閱讀 867評論 2 0
  • 那是追風(fēng)箏的哈桑,對阿米爾說:為你,千千萬萬遍。耳語般的低喃,輕輕地脫口,卻是一生一世的承諾,不只說給阿爾米聽,更...
    山風(fēng)嵐希閱讀 304評論 0 0
  • 零極限,2篇愛和喜悅的祈禱,幸福日記 1. 今天晚上吃了一頓原味餃子,呵呵是沒有調(diào)味的餃子餡,為什么呢?下班回到家...
    FennieW閱讀 170評論 0 0

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