天天看點

UILabel的使用

<a target="_blank" href="http://my.oschina.net/joanfen/blog/145184#">?</a>

1

2

3

<code>uilabel *mylabel = [[uilabel alloc] initwithframe:cgrectmake(40, 40, 120, 44)];</code>

<code>    </code> 

<code>[self.view addsubview:mylabel];</code>

 ①、設定預設文本 

<code>nsstring *text = @</code><code>"标簽文本"</code><code>;</code>

<code>mylabel.text = text;</code>

UILabel的使用

②、設定标簽文本(此屬性是ios6.0之後才出現,如若不是必要,不建議使用此屬性) 

4

5

6

7

<code>nsstring *text = @</code><code>"其實沒什麼"</code><code>;</code>

<code>nsmutableattributedstring *attributestring = [[nsmutableattributedstring alloc] initwithstring:text];</code>

<code>[attributestring setattributes:@{nsforegroundcolorattributename : [uicolor redcolor],   nsfontattributename : [uifont systemfontofsize:17]} range:nsmakerange(2, 1)];</code>

<code>mylabel.attributedtext = attributestring;</code>

UILabel的使用

8

9

10

11

12

13

14

<code>nsstring *keyword = @</code><code>"開源"</code><code>;</code>

<code>nsstring *result = @</code><code>"開源中國社群"</code><code>;</code>

<code>// 設定标簽文字</code>

<code>nsmutableattributedstring *attritutestring = [[nsmutableattributedstring alloc] initwithstring:result];</code>

<code>// 擷取标紅的位置和長度</code>

<code>nsrange range = [result rangeofstring:keyword];</code>

<code>// 設定标簽文字的屬性</code>

<code>[attritutestring setattributes:@{nsforegroundcolorattributename : [uicolor redcolor],   nsfontattributename : [uifont systemfontofsize:17]} range:range];</code>

<code>// 顯示在label上</code>

<code>label.attributedtext = attritutestring;</code>

③、設定字型,如果是使用②中的文本,那在設定attributestring的屬性時已經設定過font了和textcolor了,直接使用①設定文本時設定文本時,設定字型方法 

<code>mylabel.font = [uifont systemfontofsize:13];</code>

④、設定顔色 

<code>mylabel.textcolor = [uicolor bluecolor];</code>

⑤、設定對齊方式 

<code>mylabel.textalignment = nstextalignmentcenter;</code><code>//居中</code>

<code>nstextalignmentleft</code><code>//左對齊</code>

<code>nstextalignmentcenter</code><code>//居中</code>

<code>nstextalignmentright </code><code>//右對齊</code>

<code>nstextalignmentjustified</code><code>//最後一行自然對齊</code>

<code>nstextalignmentnatural</code><code>//預設對齊腳本</code>

nstextalignmentjustified和 nstextalignmentnatural用的時候會報錯,程式崩潰,暫時不知道什麼時候可以使用,希望知道的指教一下,感激不盡。

⑥、文字剪裁方式

<code>nslinebreakbywordwrapping = 0,</code><code>//以空格為邊界,保留單詞</code>

<code>nslinebreakbycharwrapping,   </code><code>//保留整個字元</code>

<code>nslinebreakbyclipping,       </code><code>//簡單剪裁,到邊界為止</code>

<code>nslinebreakbytruncatinghead, </code><code>//按照"……文字"顯示</code>

<code>nslinebreakbytruncatingtail, </code><code>//按照"文字……文字"顯示</code>

<code>nslinebreakbytruncatingmiddle</code><code>//按照"文字……"顯示</code>

<code>mylabel.linebreakmode = nslinebreakbytruncatinghead;</code>

⑦、設定label enabled屬性

如果設定為no,則文字顔色會變暗,表明其是不可用的,預設值為yes。

<code>mylabel.enabled = no;</code>

二、比對label上的文字

①、是否根據文本寬度改變字型大小

<code>mylabel.adjustsfontsizetofitwidth = yes;</code>

<code>//假設文字内容為@"曾在月光之下望煙花,曾共看夕陽漸降下",label長度為200,則一行顯示不下,若設定此屬性為yes,則會降低字型大小,以顯示全部内容。</code>

前後對比: 

UILabel的使用
UILabel的使用

②、改變字母之間的間距來适應label大小

<code>//當這個屬性是yes,标簽可能改變标簽文本的字母間距,以使該文本更适合标簽的邊界内。此屬性的字元串,而不管目前行的行的裁剪模式。該屬性的預設值是no。</code>

<code>mylabel.adjustsletterspacingtofitwidth = no;</code>

<code>//個人使用了一下,沒發現有什麼差別,不知道具體是什麼時候發揮作用。</code>

③、設定對齊基線

<code>mylabel.adjustsfontsizetofitwidth = yes;</code><code>//調整基線位置需将此屬性設定為yes</code>

<code>mylabel.baselineadjustment = uibaselineadjustmentalignbaselines;</code>

此屬性有三個值可選 

<code>uibaselineadjustmentalignbaselines</code><code>//文本最上端與label中線對齊,預設值</code>

<code>uibaselineadjustmentaligncenters  </code><code>//文本中線與label中線對齊</code>

<code>uibaselineadjustmentnone          </code><code>//文本最下端與label中線對齊</code>

④、最小字型大小,當字型小于這個最小值時無效,顯示此屬性值 

ios6.0之前:minimumfontsize

ios6.0之後:minimumscalefactor

<code>mylabel.minimumscalefactor = 10.0;</code><code>//預設值為0,為目前字型大小</code>

<code>mylabel.numberoflines = 2;</code><code>//label行數</code>

⑥、高亮 

<code>mylabel.highlighted = yes;</code><code>//是否高亮</code>

<code>mylabel.highlightedtextcolor = [uicolor redcolor];</code><code>//高亮顔色;此屬性在設定按鈕的titlelabel時,無論highlighted是yes還是no,在按鈕按下時标題都顯示此高亮顔色</code>

⑦、陰影 

<code>mylabel.shadowcolor = [uicolor graycolor];</code><code>//陰影顔色,預設為nil</code>

<code>mylabel.shadowoffset = cgsizemake(1, 1);</code><code>//陰影的偏移點</code>

三、label位置 

①、計算uilabel 随字型多行後的高度

<code>cgrect result,bounds;</code>

<code>bounds = cgrectmake(0, 0,200, 300);</code>

<code>heightlabel = [mylabel textrectforbounds:bounds limitedtonumberoflines:20];</code><code>//計算20行後的label的frame</code>

<code>nslog(@</code><code>"%f"</code><code>,heightlabel.size.height);</code>

②、繪制text到指定區域 

<code>- (</code><code>void</code><code>)drawtextinrect:(cgrect)rect</code>

<code>//需要重載此方法,然後由子類調用,重寫時調用super可以按預設圖形屬性繪制,若自己完全重寫繪制函數,就不用調用super了</code>

<code></code>