比如我現在有以下這個:
然後我想做到以下這種效果:
應該是最簡單的一種方法,直接提供帶描邊的,在這裡例子裡就是提供一張籃框綠底的以及一張紅框黃底的。
但是問題來了,如果需要提供多種配色方案怎麼辦?比如白天模式下是一種配色方案,夜晚模式下是另一種配色方案,或者哪天想把當前配色方案修改掉,這會導致程式裡需要儲存大量的。目前ios每種都需要提供三種解析度的,多一張就意味著其實要多三張。
還有乙個問題就是,泡泡有兩種方向,難道我們也需要提供兩種嗎?再結合第乙個問題,好像我們需要提供很多。
讓我們定義如下這個方法:
- (uiimage *)imagemaskedwithcolor:(uicolor *)color
uigraphicsendimagecontext();
return newimage;
}
該函式呼叫方式如下:
self
.imageview
.image = [self imagemaskedwithcolor:[uicolor yellowcolor]];
展示效果如下:
那接下來我們再來處理描邊的問題。這裡我也研究了很久,如果想純粹用程式自動來做乙個通用的非規則描邊,目前看來好像比較困難(如果大家有比較好的辦法,請不吝告知)。
因此我選擇了相對簡單的辦法,就是直接用泡泡的把中間扣掉,然後生成一張描邊,如以下:
然後我們直接使用上面的技術,分別為實心的泡泡和描邊的泡泡填充想要的顏色,然後再把兩種畫在一起,這樣一張帶描邊的實心泡泡就出來了。
讓我們定義如下這個新的方法:
- (uiimage *)imagemaskedwithcolor:(uicolor *)color strokecolor:(uicolor *)strokecolor
uigraphicsendimagecontext();
return newimage;
}
該函式呼叫方式如下:
self
.imageview
.image = [self strokeimagewithcolor:[uicolor yellowcolor]
strokecolor:[uicolor redcolor]];
展示效果如下:
那我們還就剩下最後乙個問題了,反向的泡泡怎麼辦?
- (uiimage *)horizontallyflippedimagefromimage:(uiimage *)
image
和之前定義的方法結合起來使用:
uiimage *newimage = [self strokeimagewithcolor:[uicolor greencolor]
strokecolor:[uicolor bluecolor]];
self
.imageview
.image = [self horizontallyflippedimagefromimage:newimage];
展示效果如下:
到這裡這次要介紹的內容都已經介紹完了,這篇部落格所介紹方法的最大好處就是可以非常容易適應各種配色方案,同時提供了一種比較實用的描邊方式,也解決過多導致程式無謂膨脹的問題。
當然也有缺點,比如描邊的寬度無法自定義,除非重新截圖。另外如果泡泡形狀發生改變,也需要重新截圖。
其實我這裡使用的一些方法基本都來自於jsqmessagesviewcontroller這個第三方庫。
給QLabe新增邊框並設定顏色
1.qlabel預設是noframe的,不顯示邊框。可通過setframeshape設定。比如 label setframeshape qframe box 2.qlabel的邊框寬度預設是0。必須更改一下邊框寬度,才能顯示出邊框顏色。3.例如改變qlabel邊框顏色 label setframes...
PyCharm設定注釋字型顏色以及是否傾斜的操作
更多程式設計教程請到 菜鳥教程 高州陽光論壇 如下所示 italic是是否傾斜。blod是否加粗。foreground是字型顏色。background背景色。補充知識 pycharm預設注釋字型大小不一的解決方法 再使用pycharm的過程中我們可能會發現注釋的字型大小不一的情況 注釋中文字大小不一...
MySQL 設定 新增主鍵以及自增問題
1 學習mysql時我遇到過建立成功後,未對相關表設定主鍵的問題。現在找到解決方法與大家一起分享。不分大小寫 2 首先對於直接在建立表時設定主鍵 3 建立表後,將某列 col 或者將某屬性設定為主鍵 4 設定遞增,增長的屬性 alter table table name modify id int ...