2013年5月15日 星期三

UILabel

基本屬性, 不解釋
@property(nonatomic,copy)   NSString           *text;            // default is nil
@property(nonatomic,retain) UIFont             *font;            // default is nil (system font 17 plain)
@property(nonatomic,retain) UIColor            *textColor;       // default is nil (text draws black)
@property(nonatomic,retain) UIColor            *shadowColor;     // default is nil (no shadow)
@property(nonatomic)        CGSize             shadowOffset;    // default is CGSizeMake(0, -1) -- a top shadow
@property(nonatomic)        NSTextAlignment    textAlignment;   // default is NSLeftTextAlignment
@property(nonatomic)        NSLineBreakMode    lineBreakMode;   // default is NSLineBreakByTruncatingTail. used for single and multiple lines of text
Alignment及LineBreakMode可以看這篇


文字高亮, 若highlighted=NO文字顏色為textColor, 若highlighted=YES文字顏色為highlightedTextColor
@property(nonatomic,retain)               UIColor *highlightedTextColor; // default is nil
@property(nonatomic,getter=isHighlighted) BOOL     highlighted;          // default is NO

NSAttributedString, 6.0之後才可使用, 可以將同一串String設定多種屬性, 使用NSAttributedString會使某些property失去效用
使用方式可以參考這篇
@property(nonatomic,copy)   NSAttributedString *attributedText NS_AVAILABLE_IOS(6_0);  // default is nil

Label顯示幾行, 預設1 即1行, 若改為0會自動換行
// this determines the number of lines to draw and what to do when sizeToFit is called. default value is 1 (single line). A value of 0 means no limit
// if the height of the text reaches the # of lines or the height of the view is less than the # of lines allowed, the text will be
// truncated using the line break mode.
@property(nonatomic) NSInteger numberOfLines;

文字適應大小方面, 有以下兩種做法
//會調整lbl.frame大小以適應文字(文字大小不會改變)
- (void)sizeToFit;

//會調整lbl的font大小, 只能用在numberOfLine=1, 文字會被適應為frame大小
@property(nonatomic) BOOL adjustsFontSizeToFitWidth;
//要取得adjustsFontSizeToFitWidth調整後的文字大小可以用此方法, 執行後actualFontSize之值為調整後的文字大小
CGFloat actualFontSize;
[lbl.text sizeWithFont:lbl.font minFontSize:lbl.minimumScaleFactor actualFontSize:&actualFontSize forWidth:lbl.bounds.size.width lineBreakMode:lbl.lineBreakMode];

沒有留言:

張貼留言