UILabel小結

      最近通過做了一個手機版的圖書管理系統,把它放在Iphone手機上測試,在此過程中又學習到了很多額外的知識,通過查閱資料,現對UILabel做以下總結,供以後學習參考。

.默認狀態

單行,不可獲取用戶點擊事件,UIViewContentModeRedraw模式,改變就重繪.

.相關屬性與函數

1.文本屬性

text        // label 顯示的文字

font        // text 的字體,值不可以是nil,否則異常

textColor      // text 的顏色

textAlignment    // text 的對其方式

lineBreakMode  // 當文字超出label顯示區域時的截取方式

typedef enum {

    UILineBreakModeWordWrap = 0,            // 以空格爲界,保留整個單詞

    UILineBreakModeCharacterWrap,           // 保留整個字符

    UILineBreakModeClip,                    // 畫到邊界爲止

    UILineBreakModeHeadTruncation,          // 省略開始,...代替

    UILineBreakModeTailTruncation,          // 省略尾部,...代替

    UILineBreakModeMiddleTruncation,        // 省略中間,...代替.3個多行時作用於最後一行,多行時這三個以單詞分行

} UILineBreakMode;

enabled // 文字是否可變,布爾值

2.文本區域

adjustsFontSizeToFitWidth

布爾值,@property(nonatomic) BOOL adjustsFontSizeToFitWidth,設置文本字體是否要減小來適應label的區域.只有當label的行數事1時有效.字體一直減小到你設置的最小字體值.

baselineAdjustment

adjustsFontSizeToFitWidth值爲YES的時候,如果文本的font需要縮小,這個值控制基線位置.只有爲本行數爲1時有效

@property(nonatomic) UIBaselineAdjustment baselineAdjustment

typedef enum {

    UIBaselineAdjustmentAlignBaselines = 0// 默認值文本最上端與label中間線對齊

    UIBaselineAdjustmentAlignCenters,// 文本中間與label中間線對齊

    UIBaselineAdjustmentNone,// 文本最底端與label中間線對齊

} UIBaselineAdjustment;

minimumFontSize   // 最小字體,行數爲1時有效,默認0.0

numberOfLines       // 文本行數,0時沒有最大行數限制

3.高亮設置

highlightedTextColor // 文本高亮時的顏色

highlighted     // 文本是否高亮

4.繪製陰影

shadowColor   // 陰影顏色

shadowOffset  // 陰影偏移

5.重載繪畫

textRectForBounds:limitedToNumberOfLines:   // 不可直接調用,需要子類重載,第二參數爲0時沒有行數限制

drawTextInRect                 // 不可直接調用,需要子類重載

6.用戶交互

userInteractionEnabled                                        // 是否可與用戶交互,基本上也都在子類中重載使用

.常用範例

1.取得label大小正好適合文字

NSString* text = @"this is a simple uilabel sample";
UILabel* label = [[UILabel alloc] initWithFrame:CGRectZero];
label.backgroundColor = [UIColor redColor];
CGFloat width = 30.0;
UIFont*  font = [UIFont systemFontOfSize:14.0];
label.font = font;
label.numberOfLines = 0;
label.lineBreakMode = UILineBreakModeWordWrap;
label.text = text;
// 方法一,用文字來確定
CGSize size = [text sizeWithFont:font constrainedToSize:CGSizeMake(width, 2000.0) lineBreakMode:UILineBreakModeWordWrap];
// 方法二,自適應
//CGSize size = [label sizeThatFits:CGSizeMake(width, 2000.0)];
    
label.frame = CGRectMake(0, 0, size.width, size.height);

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章