//學(xué)習(xí)內(nèi)容
/*
1.控件 UIView UILabel UITextField UITextView UIButton
2.字體基括、大小吻氧、單位、顏色
*/
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(10, 30, 300, 260)];
label.text = @"Label Text Content, This is a text label things attribute";//默認(rèn)為空
label.font = [UIFont systemFontOfSize:17];//默認(rèn)使用系統(tǒng)的17
label.textColor = [UIColor orangeColor];//默認(rèn)使用文本黑色
label.shadowColor = [UIColor lightGrayColor];//默認(rèn)沒有陰影
label.shadowOffset = CGSizeMake(1,0);//默認(rèn)是一個(gè)向上的陰影(0,-1)
label.textAlignment = NSTextAlignmentCenter;//默認(rèn)是左對齊
label.lineBreakMode = NSLineBreakByTruncatingTail;//段落樣式,默認(rèn)是最后截?cái)辔舶退叮?..代替
//富文本的基本數(shù)據(jù)類型争剿,屬性字符串。以此為基礎(chǔ)痊末,如果這個(gè)設(shè)置了相應(yīng)的屬性蚕苇,則會(huì)忽略上面設(shè)置的屬性,默認(rèn)為空
NSString *string = label.text;
const CGFloat fontSize = 16.0;
NSMutableAttributedString *attrString = [[NSMutableAttributedString alloc] initWithString:string];
NSUInteger length = [string length];
//設(shè)置字體
UIFont *baseFont = [UIFont systemFontOfSize:fontSize];
[attrString addAttribute:NSFontAttributeName value:baseFont range:NSMakeRange(0, length)];//設(shè)置所有的字體
UIFont *boldFont = [UIFont boldSystemFontOfSize:fontSize];
[attrString addAttribute:NSFontAttributeName value:boldFont range:[string rangeOfString:@"Text"]];//設(shè)置Text這四個(gè)字母的字體為粗體
//設(shè)置傾斜凿叠,需要導(dǎo)入coreText
UIFont *italicFont = GetVariationOfFontWithTrait(baseFont,
kCTFontTraitItalic);
[attrString addAttribute:NSFontAttributeName value:italicFont
range:[string rangeOfString:@"Label"]];
// 設(shè)置顏色
UIColor *color = [UIColor redColor];
[attrString addAttribute:NSForegroundColorAttributeName
value:color
range:[string rangeOfString:@"Content"]];
[attrString addAttribute:NSBackgroundColorAttributeName value:[UIColor blueColor] range:[string rangeOfString:@"ent"]];
//可以對這些屬性設(shè)置值
//字體名稱有以下:
//? ? label.font = [UIFont fontWithName:@"Arial-BoldItalicMT" size:24];
[attrString addAttribute:NSFontAttributeName value:[UIFont fontWithName:@"Verdana-BoldItalic" size:18] range:[string rangeOfString:@"Label"]];
label.numberOfLines = 2;
NSMutableParagraphStyle *
style = [[NSParagraphStyle defaultParagraphStyle] mutableCopy];
style.lineSpacing = 10;//增加行高
style.headIndent = 10;//頭部縮進(jìn)涩笤,相當(dāng)于左padding
style.tailIndent = -10;//相當(dāng)于右padding
style.lineHeightMultiple = 1.5;//行間距是多少倍
style.alignment = NSTextAlignmentLeft;//對齊方式
style.firstLineHeadIndent = 20;//首行頭縮進(jìn)
style.paragraphSpacing = 10;//段落后面的間距
style.paragraphSpacingBefore = 20;//段落之前的間距
[attrString addAttribute:NSParagraphStyleAttributeName value:style range:NSMakeRange(0, length)];
[attrString addAttribute:NSKernAttributeName value:@2 range:NSMakeRange(0, length)];//字符間距 2pt
[attrString addAttribute:NSStrokeColorAttributeName value:[UIColor blueColor] range:[string rangeOfString:@"is"]];//設(shè)置文字描邊顏色,需要和NSStrokeWidthAttributeName設(shè)置描邊寬度幔嫂,這樣就能使文字空心
[attrString addAttribute:NSStrokeWidthAttributeName value:@2 range:[string rangeOfString:@"is"]];//空心字辆它,文字邊框描述
[attrString addAttribute:NSUnderlineStyleAttributeName value:@(NSUnderlineStyleSingle) range:[string rangeOfString:@"text"]];//下劃線
[attrString addAttribute:NSUnderlineStyleAttributeName value:@(NSUnderlineStyleThick) range:[string rangeOfString:@"label"]];//厚的下劃線
[attrString addAttribute:NSStrikethroughStyleAttributeName value:@(NSUnderlinePatternSolid | NSUnderlineStyleSingle) range:[string rangeOfString:@"things"]];//刪除線
[attrString addAttribute:NSStrikethroughColorAttributeName value:[UIColor blueColor] range:[string rangeOfString:@"things"]];//刪除線藍(lán)色
label.attributedText = attrString;
label.highlightedTextColor = [UIColor redColor];//設(shè)置文本高亮顯示顏色,與highlighted一起使用履恩。
label.highlighted = NO; //高亮狀態(tài)是否打開
label.enabled = YES;//設(shè)置文字內(nèi)容是否可變
label.userInteractionEnabled = YES;//設(shè)置標(biāo)簽是否忽略或移除用戶交互锰茉。默認(rèn)為NO
label.baselineAdjustment = UIBaselineAdjustmentNone;//如果adjustsFontSizeToFitWidth屬性設(shè)置為YES,這個(gè)屬性就來控制文本基線的行為切心。
//? ? UIBaselineAdjustmentAlignBaselines=0飒筑,默認(rèn),文本最上端與中線對齊绽昏。
//? ? UIBaselineAdjustmentAlignCenters,? 文本中線與label中線對齊协屡。
//? ? UIBaselineAdjustmentNone,? 文本最低端與label中線對齊。;
[self.view addSubview:label];
/*
字體名如下:
Font Family: American Typewriter
Font: AmericanTypewriter
Font: AmericanTypewriter-Bold
Font Family: AppleGothic
Font: AppleGothic
Font Family: Arial
Font: ArialMT
Font: Arial-BoldMT
Font: Arial-BoldItalicMT
Font: Arial-ItalicMT
Font Family: Arial Rounded MT Bold
Font: ArialRoundedMTBold
Font Family: Arial Unicode MS
Font: ArialUnicodeMS
Font Family: Courier
Font: Courier
Font: Courier-BoldOblique
Font: Courier-Oblique
Font: Courier-Bold
Font Family: Courier New
Font: CourierNewPS-BoldMT
Font: CourierNewPS-ItalicMT
Font: CourierNewPS-BoldItalicMT
Font: CourierNewPSMT
Font Family: DB LCD Temp
Font: DBLCDTempBlack
Font Family: Georgia
Font: Georgia-Bold
Font: Georgia
Font: Georgia-BoldItalic
Font: Georgia-Italic
Font Family: Helvetica
Font: Helvetica-Oblique
Font: Helvetica-BoldOblique
Font: Helvetica
Font: Helvetica-Bold
Font Family: Helvetica Neue
Font: HelveticaNeue
Font: HelveticaNeue-Bold
Font Family: Hiragino Kaku Gothic **** W3
Font: HiraKakuProN-W3
Font Family: Hiragino Kaku Gothic **** W6
Font: HiraKakuProN-W6
Font Family: Marker Felt
Font: MarkerFelt-Thin
Font Family: STHeiti J
Font: STHeitiJ-Medium
Font: STHeitiJ-Light
Font Family: STHeiti K
Font: STHeitiK-Medium
Font: STHeitiK-Light
Font Family: STHeiti SC
Font: STHeitiSC-Medium
Font: STHeitiSC-Light
Font Family: STHeiti TC
Font: STHeitiTC-Light
Font: STHeitiTC-Medium
Font Family: Times New Roman
Font: TimesNewRomanPSMT
Font: TimesNewRomanPS-BoldMT
Font: TimesNewRomanPS-BoldItalicMT
Font: TimesNewRomanPS-ItalicMT
Font Family: Trebuchet MS
Font: TrebuchetMS-Italic
Font: TrebuchetMS
Font: Trebuchet-BoldItalic
Font: TrebuchetMS-Bold
Font Family: Verdana
Font: Verdana-Bold
Font: Verdana-BoldItalic
Font: Verdana
Font: Verdana-Italic
Font Family: Zapfino
Font: Zapfino
*/
//文本對齊方式
/* Values for NSTextAlignment */
/*
NSTextAlignmentLeft 左對齊
NSTextAlignmentCenter 劇中對齊
NSTextAlignmentRight 右對齊
NSTextAlignmentJustified 兩端對齊
NSTextAlignmentNatural 根據(jù)顯示的文字特性對齊
*/
//段落樣式
/*
lineSpacing;? ? ? ? ? ? ? ? ? ? ? ? 來增加行距
paragraphSpacing;
alignment;? ? ? ? ? ? ? ? ? ? ? ? ? 對齊
firstLineHeadIndent;? ? ? ? ? ? ? ? 段落開始的縮排像素
headIndent;? ? ? ? ? ? ? ? ? ? ? ? ? 可調(diào)整全部文字的縮排距離全谤,可當(dāng)作左邊 padding 使用
tailIndent;? ? ? ? ? ? ? ? ? ? ? ? ? 可調(diào)整文字尾端的縮排距離肤晓。需要注意的是,這里指定的值可以當(dāng)作文字顯示的寬认然、而也可當(dāng)作右邊 padding 使用补憾,依據(jù)輸入的正負(fù)值而定:
lineBreakMode;
minimumLineHeight;
maximumLineHeight;? ? ? ? 而針對不同的字型與字號(hào),我們可以透過指定最大與最小行距(maximumLineHeight 與 minimumLineHeight)來避免過高或過窄的狀況發(fā)生卷员。
baseWritingDirection;
lineHeightMultiple;? ? ? ? ? ? ? ? ? 想要調(diào)整行距盈匾,可以透過搭配使用 lineHeightMultiple 更改行距倍數(shù)
paragraphSpacingBefore; 而若是文章內(nèi)容有分段落的話,也可以透過指定段落結(jié)尾距離(paragraphSpacing)以及段落開頭距離(paragraphSpacingBefore):
hyphenationFactor;
@property(readwrite,copy,NS_NONATOMIC_IOSONLY) NSArray *tabStops NS_AVAILABLE_IOS(7_0);
@property(readwrite,NS_NONATOMIC_IOSONLY) CGFloat defaultTabInterval NS_AVAILABLE_IOS(7_0);
*/
/* Predefined character attributes for text. If the key is not in the dictionary, then use the default values as described below.? //預(yù)定義的文本屬性值毕骡,如果鍵不是一個(gè)字典削饵,那么使用默認(rèn)的值作為以下描述
NSFontAttributeName 字體 默認(rèn)是Helvetica 12號(hào)
NSParagraphStyleAttributeName 段落樣式
*/
/*
UIKIT_EXTERN NSString *const? NS_AVAILABLE_IOS(6_0);? ? ? // NSParagraphStyle, default defaultParagraphStyle
UIKIT_EXTERN NSString *const NSForegroundColorAttributeName NS_AVAILABLE_IOS(6_0);? ? // UIColor, default blackColor
UIKIT_EXTERN NSString *const NSBackgroundColorAttributeName NS_AVAILABLE_IOS(6_0);? ? // UIColor, default nil: no background
UIKIT_EXTERN NSString *const NSLigatureAttributeName NS_AVAILABLE_IOS(6_0);? ? ? ? ? ? // NSNumber containing integer, default 1: default ligatures, 0: no ligatures
UIKIT_EXTERN NSString *const NSKernAttributeName NS_AVAILABLE_IOS(6_0);? ? ? ? ? ? ? ? // NSNumber containing floating point value, in points; amount to modify default kerning. 0 means kerning is disabled. (note: values other than nil and 0 are unsupported on iOS)
UIKIT_EXTERN NSString *const NSStrikethroughStyleAttributeName NS_AVAILABLE_IOS(6_0);? // NSNumber containing integer, default 0: no strikethrough
UIKIT_EXTERN NSString *const NSUnderlineStyleAttributeName NS_AVAILABLE_IOS(6_0);? ? ? // NSNumber containing integer, default 0: no underline
UIKIT_EXTERN NSString *const NSStrokeColorAttributeName NS_AVAILABLE_IOS(6_0);? ? ? ? // UIColor, default nil: same as foreground color
UIKIT_EXTERN NSString *const NSStrokeWidthAttributeName NS_AVAILABLE_IOS(6_0);? ? ? ? // NSNumber containing floating point value, in percent of font point size, default 0: no stroke; positive for stroke alone, negative for stroke and fill (a typical value for outlined text would be 3.0)
UIKIT_EXTERN NSString *const NSShadowAttributeName NS_AVAILABLE_IOS(6_0);? ? ? ? ? ? ? // NSShadow, default nil: no shadow
UIKIT_EXTERN NSString *const NSTextEffectAttributeName NS_AVAILABLE_IOS(7_0);? ? ? ? ? // NSString, default nil: no text effect
UIKIT_EXTERN NSString *const NSAttachmentAttributeName NS_AVAILABLE_IOS(7_0);? ? ? ? ? // NSTextAttachment, default nil
UIKIT_EXTERN NSString *const NSLinkAttributeName NS_AVAILABLE_IOS(7_0);? ? ? ? ? ? ? ? // NSURL (preferred) or NSString
UIKIT_EXTERN NSString *const NSBaselineOffsetAttributeName NS_AVAILABLE_IOS(7_0);? ? ? // NSNumber containing floating point value, in points; offset from baseline, default 0
UIKIT_EXTERN NSString *const NSUnderlineColorAttributeName NS_AVAILABLE_IOS(7_0);? ? ? // UIColor, default nil: same as foreground color
UIKIT_EXTERN NSString *const NSStrikethroughColorAttributeName NS_AVAILABLE_IOS(7_0);? // UIColor, default nil: same as foreground color
UIKIT_EXTERN NSString *const NSObliquenessAttributeName NS_AVAILABLE_IOS(7_0);? ? ? ? // NSNumber containing floating point value; skew to be applied to glyphs, default 0: no skew
UIKIT_EXTERN NSString *const NSExpansionAttributeName NS_AVAILABLE_IOS(7_0);? ? ? ? ? // NSNumber containing floating point value; log of expansion factor to be applied to glyphs, default 0: no expansion
UIKIT_EXTERN NSString *const NSWritingDirectionAttributeName NS_AVAILABLE_IOS(7_0);? ? // NSArray of NSNumbers representing the nested levels of writing direction overrides as defined by Unicode LRE, RLE, LRO, and RLO characters.? The control characters can be obtained by masking NSWritingDirection and NSTextWritingDirection values.? LRE: NSWritingDirectionLeftToRight|NSTextWritingDirectionEmbedding, RLE: NSWritingDirectionRightToLeft|NSTextWritingDirectionEmbedding, LRO: NSWritingDirectionLeftToRight|NSTextWritingDirectionOverride, RLO: NSWritingDirectionRightToLeft|NSTextWritingDirectionOverride,
UIKIT_EXTERN NSString *const NSVerticalGlyphFormAttributeName NS_AVAILABLE_IOS(6_0);? // An NSNumber containing an integer value.? 0 means horizontal text.? 1 indicates vertical text.? If not specified, it could follow higher-level vertical orientation settings.? Currently on iOS, it's always horizontal.? The behavior for any other value is undefined.
*/
// NSParagraphStyle? 段落樣式
//? ? typedef NS_ENUM(NSInteger, NSLineBreakMode) { /* What to do with long lines */ //對于長內(nèi)容或多行內(nèi)容的處理方式
//? ? ? ? NSLineBreakByWordWrapping = 0,? ? /* Wrap at word boundaries, default */? //按包含單詞為界限截?cái)?/p>
//? ? ? ? NSLineBreakByCharWrapping, /* Wrap at character boundaries */? ? ? ? ? //按字符為界限截?cái)?/p>
//? ? ? ? NSLineBreakByClipping, /* Simply clip */? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //簡單的修剪
//? ? ? ? NSLineBreakByTruncatingHead, /* Truncate at head of line: "...wxyz" */? ? ? ? //截?cái)囝^部
//? ? ? ? NSLineBreakByTruncatingTail, /* Truncate at tail of line: "abcd..." */? ? ? ? //截?cái)辔舶?/p>
//? ? ? ? NSLineBreakByTruncatingMiddle /* Truncate middle of line:? "ab...yz" */? ? ? ? //截?cái)嘀虚g
//? ? } NS_ENUM_AVAILABLE_IOS(6_0);
}
//獲取斜體
UIFont * GetVariationOfFontWithTrait(UIFont *baseFont,
CTFontSymbolicTraits trait) {
CGFloat fontSize = [baseFont pointSize];
CFStringRef
baseFontName = (__bridge CFStringRef)[baseFont fontName];
CTFontRef baseCTFont = CTFontCreateWithName(baseFontName,
fontSize, NULL);
CTFontRef ctFont =
CTFontCreateCopyWithSymbolicTraits(baseCTFont, 0, NULL,
trait, trait);
NSString *variantFontName =
CFBridgingRelease(CTFontCopyName(ctFont,
kCTFontPostScriptNameKey));
UIFont *variantFont = [UIFont fontWithName:variantFontName
size:fontSize];
CFRelease(ctFont);
CFRelease(baseCTFont);
return variantFont;
};