一、介紹
最近專案有乙個需求,需要給朗誦的文字新增對應的拼音,而且要求使用原生的控制項實現。一開始聽到這個需求挺懵逼的,感覺有點難。後來,靜下來想一下,其實還是可以實現的,無非就是自定義了。下面,就來說說思想。
二、思想
server端首先返回漢字和拼音一一對應的字串,我們根據需要分別擷取存入陣列。乙個漢字要新增拼音,拼音使用乙個view顯示,漢字也使用乙個view顯示,那麼包含這兩個控制項的則是乙個父view。許多個父view根據橫向瀑布流的布局排列,就可以實現需要的漢字新增拼音的效果。
結構圖如下:
具體步驟如下:
1、建立乙個textview,繼承自uiscrollview,因為內容可能很多,需要滾動才能顯示完;
2、在textview中接收模型時,動態建立很多的contanerview, 拼音view,漢字view,並使用masonry約束;
3、採用橫向瀑布流演算法對很多的contanerview進行布局;
4、在viewcontroller中建立並新增textview,最後設定它的contentsize即可。
三、特點
優點:採用原生的控制項實現,效果很流暢,使用者體驗好。
缺點:因為是一次性建立並新增很多的控制項,如果文字特別多時,view渲染的過程比較耗時,建議放到自動釋放池中進行建立。
四、**
核心演算法:
#pragma mark - layout subviewsview code-(void
)setupsubviewsconstraints ];
[pinyinlabel mas_makeconstraints:^(masconstraintmaker *make) ];
[chineselabel mas_makeconstraints:^(masconstraintmaker *make) ];
//計算座標
sumwidth += (maxwidth +margin);
if (i < self.contentarray.count-1
)
if (limitwidth - sumwidth >= maxwidth)
else
}viewy = (viewheight + 6*margin)*row +margin;
}self.realheight = viewy + viewheight + 1.5*margin;
}
完整**:(在github上,覺得有用就給個star吧,
在網頁上如何實現文字豎排
在css中,我們的文字排版通常都是從左向右,從上往下。那麼,如果我們要實現頁面文字豎排,應該怎樣設定呢?為了解決這個問題,下面課課家 將為大家介紹實現文字豎排的方法,有興趣的朋友不妨參考一下。一 writing mode語法 要實現頁面文字豎排,我們需要使用writing mode屬性,下面我們一起...
iOS上如何讓按鈕文字左對齊問題
原文 button.titlelabel.textalignment nstextalignmentleft 這句無效 button.contenthorizontalalignment uicontrolcontenthorizontalalignmentleft button.titleedge...
如何實現在cmd輸入中文
最近幾天在用cmd學習mysql,遇到了在cmd下不能輸入中文的問題,嘗試過複製貼上的方式,但是在後來使用建立的表的時候,原來複製貼上上的中文就會顯示為 亂碼,所以最好還是通過直接輸入中文的方式。想要在cmd中可以輸入中文,可以通過ctrl space 空格鍵 ctrl shift alt shif...