iOS 如何實現在文字上新增拼音

2022-03-17 21:30:10 字數 1565 閱讀 5253

一、介紹

最近專案有乙個需求,需要給朗誦的文字新增對應的拼音,而且要求使用原生的控制項實現。一開始聽到這個需求挺懵逼的,感覺有點難。後來,靜下來想一下,其實還是可以實現的,無非就是自定義了。下面,就來說說思想。

二、思想

server端首先返回漢字和拼音一一對應的字串,我們根據需要分別擷取存入陣列。乙個漢字要新增拼音,拼音使用乙個view顯示,漢字也使用乙個view顯示,那麼包含這兩個控制項的則是乙個父view。許多個父view根據橫向瀑布流的布局排列,就可以實現需要的漢字新增拼音的效果。

結構圖如下:

具體步驟如下:

1、建立乙個textview,繼承自uiscrollview,因為內容可能很多,需要滾動才能顯示完;

2、在textview中接收模型時,動態建立很多的contanerview, 拼音view,漢字view,並使用masonry約束;

3、採用橫向瀑布流演算法對很多的contanerview進行布局;

4、在viewcontroller中建立並新增textview,最後設定它的contentsize即可。

三、特點

優點:採用原生的控制項實現,效果很流暢,使用者體驗好。

缺點:因為是一次性建立並新增很多的控制項,如果文字特別多時,view渲染的過程比較耗時,建議放到自動釋放池中進行建立。

四、**

核心演算法:

#pragma mark - layout subviews

-(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;

}

view code

完整**:(在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...