NGUI文本由右向左豎排顯示

思路:

1,將要顯示的文本由前向后拆分為若干列;

2,然后由每一列組成要顯示的每一行;

3,給每一行增加換行后拼接成一個(gè)正向顯示的字符串;

4,將拼接后的字符串直接賦值給UILabel(還是按照從左往右顯示)

////// 獲得從右向左的豎排文字

?///UILabel空間,主要用于獲取字號(hào)和行間距?

?///原始字符串?

?///限定的文本高度 ///

public static string GetVerticalBeginFromRight(UILabel label, string str, int heightLim, string spaceXStr) {?

?string retStr = string.Empty;

?if (null == label || str.Equals(string.Empty)) { return ""; }?

?int fontSize = label.fontSize;

?int spacingY = label.spacingY; //首先計(jì)算能夠有多少列 int lineNum = heightLim/(fontSize + spacingY);

?int column = (int)Mathf.Ceil( (float)str.Length / lineNum ); //Debug.LogError("================lineNum:" + lineNum + "==column:" + column); ListcolStrs = new List(column);

? ? ? ? ? ? int lastListIndex = 0;

? ? ? ? ? ? int listIndex = 0;

? ? ? ? ? ? for ( int i = 0;i < str.Length;i++)

? ? ? ? ? ? {

? ? ? ? ? ? ? ? listIndex = i / lineNum;

? ? ? ? ? ? ? ? if(listIndex > lastListIndex)

? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? string colStr = str.Substring(lastListIndex * lineNum, lastListIndex * lineNum + lineNum > str.Length ? str.Length : lineNum);

? ? ? ? ? ? ? ? ? ? colStrs.Add(colStr);

? ? ? ? ? ? ? ? ? ? //Debug.LogError("================lastListIndex:"+ lastListIndex + "==colStrs[lastListIndex]:" + colStrs[lastListIndex]);

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? lastListIndex = listIndex;

? ? ? ? ? ? }

? ? ? ? ? ? string nextColStr = str.Substring(listIndex * lineNum, listIndex * lineNum + lineNum > str.Length ? str.Length - listIndex * lineNum : lineNum);

? ? ? ? ? ? colStrs.Add(nextColStr);

? ? ? ? ? ? //Debug.LogError("================listIndex:" + listIndex + "==colStrs[listIndex]:" + colStrs[listIndex]);

? ? ? ? ? ? //反轉(zhuǎn)colStrs

? ? ? ? ? ? colStrs.Reverse();

? ? ? ? ? ? //拼接從左向右的換行字符串

? ? ? ? ? ? for( int i = 0;i < lineNum;i++)

? ? ? ? ? ? {

? ? ? ? ? ? ? ? //獲取每一列中的字符

? ? ? ? ? ? ? ? string tempStr = string.Empty;

? ? ? ? ? ? ? ? for ( int m = 0;m < column; m++)

? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? string lineChar = colStrs[m].Length > i ? colStrs[m].Substring(i, 1) : GenBlank(CaculateBlankNeed(fontSize, fontSize));

? ? ? ? ? ? ? ? ? ? //獲得符號(hào)的寬度

? ? ? ? ? ? ? ? ? ? int charW = GetTextPrintedSize(lineChar, fontSize);

? ? ? ? ? ? ? ? ? ? if( charW >= fontSize)

? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? tempStr += (spaceXStr + lineChar);

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? else

? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? string blank = GenBlank(CaculateBlankNeed(fontSize - charW, fontSize));

? ? ? ? ? ? ? ? ? ? ? ? tempStr += (blank + spaceXStr + lineChar);

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? retStr += tempStr + '\n';

? ? ? ? ? ? }

? ? ? ? ? ? //Debug.LogError("=================retStr:\n" + retStr);

? ? ? ? ? ? label.text = retStr;

? ? ? ? ? ? return retStr;

? ? ? ? }

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

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

  • 前言 最先接觸編程的知識(shí)是在大學(xué)里面,大學(xué)里面學(xué)了一些基礎(chǔ)的知識(shí),c語言,java語言,單片機(jī)的匯編語言等;大學(xué)畢...
    oceanfive閱讀 3,398評(píng)論 0 7
  • Lua 5.1 參考手冊(cè) by Roberto Ierusalimschy, Luiz Henrique de F...
    蘇黎九歌閱讀 14,259評(píng)論 0 38
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,694評(píng)論 19 139
  • 【程序1】 題目:古典問題:有一對(duì)兔子,從出生后第3個(gè)月起每個(gè)月都生一對(duì)兔子,小兔子長到第三個(gè)月后每個(gè)月又生一對(duì)兔...
    葉總韓閱讀 5,229評(píng)論 0 41
  • “林十三,又在睡覺”。剛聽到聲音,一個(gè)粉筆頭就狠狠的砸在了我的腦門中?!笆钦l,打攪?yán)献拥拿缐簟?。剛抬起頭,只見英語...
    向北V閱讀 421評(píng)論 2 2

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