UILabel的各种属性与方法的使用(转)
- #import "LabelTestViewController.h"
- @implementation LabelTestViewController
- /*
- Accessing the Text Attributes
- text property
- font property
- textColor property
- textAlignment property
- lineBreakMode property
- enabled property
- Sizing the Label’s Text
- adjustsFontSizeToFitWidth property
- baselineAdjustment property
- minimumFontSize property 无例
- numberOfLines property
- Managing Highlight Values
- highlightedTextColor property
- highlighted property
- Drawing a Shadow
- shadowColor property
- shadowOffset property
- Drawing and Positioning Overrides
- – textRectForBounds:limitedToNumberOfLines: 无例
- – drawTextInRect: 无例
- Setting and Getting Attributes
- userInteractionEnabled property
- */
- // Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- - (void)viewDidLoad {
- UILabel *label1 = [[UILabel alloc]initWithFrame:CGRectMake(50.0, 20.0, 200.0, 50.0)];
- UILabel *label2 = [[UILabel alloc]initWithFrame:CGRectMake(50.0, 80.0, 200.0, 50.0)];
- UILabel *label3 = [[UILabel alloc]initWithFrame:CGRectMake(50.0, 140.0, 200.0, 50.0)];
- UILabel *label4 = [[UILabel alloc]initWithFrame:CGRectMake(50.0, 200.0, 200.0, 50.0)];
- UILabel *label5 = [[UILabel alloc]initWithFrame:CGRectMake(50.0, 260.0, 200.0, 50.0)];
- UILabel *label6 = [[UILabel alloc]initWithFrame:CGRectMake(50.0, 320.0, 200.0, 50.0)];
- UILabel *label7 = [[UILabel alloc]initWithFrame:CGRectMake(50.0, 380.0, 200.0, 50.0)];
- //设置显示文字
- label1.text = @"label1";
- label2.text = @"label2";
- label3.text = @"label3--label3--label3--label3--label3--label3--label3--label3--label3--label3--label3--";
- label4.text = @"label4--label4--label4--label4--";
- label5.text = @"label5--label5--label5--label5--label5--label5--";
- label6.text = @"label6";
- label7.text = @"label7";
- //设置字体:粗体,正常的是 SystemFontOfSize
- label1.font = [UIFont boldSystemFontOfSize:20];
- //设置文字颜色
- label1.textColor = [UIColor orangeColor];
- label2.textColor = [UIColor purpleColor];
- //设置文字位置
- label1.textAlignment = UITextAlignmentRight;
- label2.textAlignment = UITextAlignmentCenter;
- //设置字体大小适应label宽度
- label4.adjustsFontSizeToFitWidth = YES;
- //设置label的行数
- label5.numberOfLines = 2;
- UIlabel.backgroudColor=[UIColor clearColor]; //可以去掉背景色
- //设置高亮
- label6.highlighted = YES;
- label6.highlightedTextColor = [UIColor orangeColor];
- //设置阴影
- label7.shadowColor = [UIColor redColor];
- label7.shadowOffset = CGSizeMake(1.0,1.0);
- //设置是否能与用户进行交互
- label7.userInteractionEnabled = YES;
- //设置label中的文字是否可变,默认值是YES
- label3.enabled = NO;
- //设置文字过长时的显示格式
- label3.lineBreakMode = UILineBreakModeMiddleTruncation;//截去中间
- // typedef enum {
- // UILineBreakModeWordWrap = 0,
- // UILineBreakModeCharacterWrap,
- // UILineBreakModeClip,//截去多余部分
- // UILineBreakModeHeadTruncation,//截去头部
- // UILineBreakModeTailTruncation,//截去尾部
- // UILineBreakModeMiddleTruncation,//截去中间
- // } UILineBreakMode;
- //如果adjustsFontSizeToFitWidth属性设置为YES,这个属性就来控制文本基线的行为
- label4.baselineAdjustment = UIBaselineAdjustmentNone;
- // typedef enum {
- // UIBaselineAdjustmentAlignBaselines,
- // UIBaselineAdjustmentAlignCenters,
- // UIBaselineAdjustmentNone,
- // } UIBaselineAdjustment;
- [self.view addSubview:label1];
- [self.view addSubview:label2];
- [self.view addSubview:label3];
- [self.view addSubview:label4];
- [self.view addSubview:label5];
- [self.view addSubview:label6];
- [self.view addSubview:label7];
- [label1 release];
- [label2 release];
- [label3 release];
- [label4 release];
- [label5 release];
- [label6 release];
- [label7 release];
- [super viewDidLoad];
- }
- /*
- // Override to allow orientations other than the default portrait orientation.
- - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
- // Return YES for supported orientations
- return (interfaceOrientation == UIInterfaceOrientationPortrait);
- }
- */
- - (void)didReceiveMemoryWarning {
- // Releases the view if it doesn't have a superview.
- [super didReceiveMemoryWarning];
- // Release any cached data, images, etc that aren't in use.
- }
- - (void)viewDidUnload {
- // Release any retained subviews of the main view.
- // e.g. self.myOutlet = nil;
- }
- - (void)dealloc {
- [super dealloc];
- }
- @end
UIFont字体设置
一、创建任意样式字体
- label.font = [UIFont fontWithName:@"fontName" size:17];
- label.font = [label.font fontWithSize:17];
二、创建指定大小的系统默认字体(默认:Helvetica)
- label.font = [UIFont systemFontOfSize:17];
- label.font = [UIFont boldSystemFontOfSize:17]; // 指定大小粗体
- label.font = [UIFont italicSystemFontOfSize:17]; // 指定大小斜体
三、获取可用的字体名数组
- NSArray *fontFamilies = [UIFont familyNames]; // 返回所有可用的fontFamily
- NSArray *fontNames = [UIFont fontNamesForFamilyName:@"fongFamilyName"]; // 返回指定fontFamily下的所有fontName
四、获取指定字体的familyName/fontName
- NSString *familyName = [label.font familyName];
- NSString *fontName = [label.font fontName];
五、获取系统标准字体大小
- CGFloat labelFontSize = [UIFont labelFontSize]; // Returns the standard font size used for labels.
- CGFloat buttonFontSize = [UIFont buttonFontSize]; // Returns the standard font size used for buttons.
- CGFloat smallSystemFontSize = [UIFont smallSystemFontSize]; // Returns the size of the standard small system font.
- CGFloat systemFontSize = [UIFont systemFontSize]; // Returns the size of the standard system font.
附字体样式表:
Thonburi
-Thonburi-Bold
-Thonburi
Snell Roundhand
-SnellRoundhand-Bold
-SnellRoundhand-Black
-SnellRoundhand
Academy Engraved LET
-AcademyEngravedLetPlain
Avenir
-Avenir-LightOblique
-Avenir-MediumOblique
-Avenir-Medium
-Avenir-HeavyOblique
-Avenir-BlackOblique
-Avenir-Oblique
-Avenir-Book
-Avenir-Roman
-Avenir-BookOblique
-Avenir-Light
-Avenir-Heavy
-Avenir-Black
Marker Felt
-MarkerFelt-Wide
-MarkerFelt-Thin
Geeza Pro
-GeezaPro-Bold
-GeezaPro
Arial Rounded MT Bold
-ArialRoundedMTBold
Trebuchet MS
-TrebuchetMS
-TrebuchetMS-Bold
-TrebuchetMS-Italic
-Trebuchet-BoldItalic
Arial
-Arial-BoldMT
-ArialMT
-Arial-ItalicMT
-Arial-BoldItalicMT
Marion
-Marion-Regular
-Marion-Bold
-Marion-Italic
Gurmukhi MN
-GurmukhiMN
-GurmukhiMN-Bold
Malayalam Sangam MN
-MalayalamSangamMN-Bold
-MalayalamSangamMN
Bradley Hand
-BradleyHandITCTT-Bold
Kannada Sangam MN
-KannadaSangamMN
-KannadaSangamMN-Bold
Bodoni 72 Oldstyle
-BodoniSvtyTwoOSITCTT-Book
-BodoniSvtyTwoOSITCTT-Bold
-BodoniSvtyTwoOSITCTT-BookIt
Cochin
-Cochin
-Cochin-BoldItalic
-Cochin-Italic
-Cochin-Bold
Sinhala Sangam MN
-SinhalaSangamMN
-SinhalaSangamMN-Bold
Hiragino Kaku Gothic ProN
-HiraKakuProN-W6
-HiraKakuProN-W3
Papyrus
-Papyrus-Condensed
-Papyrus
Verdana
-Verdana
-Verdana-Bold
-Verdana-BoldItalic
-Verdana-Italic
Zapf Dingbats
-ZapfDingbatsITC
Avenir Next Condensed
-AvenirNextCondensed-HeavyItalic
-AvenirNextCondensed-DemiBold
-AvenirNextCondensed-Italic
-AvenirNextCondensed-Heavy
-AvenirNextCondensed-DemiBoldItalic
-AvenirNextCondensed-Medium
-AvenirNextCondensed-BoldItalic
-AvenirNextCondensed-Bold
-AvenirNextCondensed-UltraLightItalic
-AvenirNextCondensed-UltraLight
-AvenirNextCondensed-MediumItalic
-AvenirNextCondensed-Regular
Courier
-Courier-Bold
-Courier
-Courier-BoldOblique
-Courier-Oblique
Hoefler Text
-HoeflerText-Black
-HoeflerText-Italic
-HoeflerText-Regular
-HoeflerText-BlackItalic
Helvetica
-Helvetica-LightOblique
-Helvetica
-Helvetica-Oblique
-Helvetica-BoldOblique
-Helvetica-Bold
-Helvetica-Light
Euphemia UCAS
-EuphemiaUCAS-Bold
-EuphemiaUCAS
-EuphemiaUCAS-Italic
Hiragino Mincho ProN
-HiraMinProN-W3
-HiraMinProN-W6
Bodoni Ornaments
-BodoniOrnamentsITCTT
Apple Color Emoji
-AppleColorEmoji
Optima
-Optima-ExtraBlack
-Optima-Italic
-Optima-Regular
-Optima-BoldItalic
-Optima-Bold
Gujarati Sangam MN
-GujaratiSangamMN
-GujaratiSangamMN-Bold
Devanagari Sangam MN
-DevanagariSangamMN
-DevanagariSangamMN-Bold
Times New Roman
-TimesNewRomanPS-ItalicMT
-TimesNewRomanPS-BoldMT
-TimesNewRomanPSMT
-TimesNewRomanPS-BoldItalicMT
Kailasa
-Kailasa
-Kailasa-Bold
Telugu Sangam MN
-TeluguSangamMN-Bold
-TeluguSangamMN
Heiti SC
-STHeitiSC-Medium
-STHeitiSC-Light
Apple SD Gothic Neo
-AppleSDGothicNeo-Bold
-AppleSDGothicNeo-Medium
Futura
-Futura-Medium
-Futura-CondensedExtraBold
-Futura-CondensedMedium
-Futura-MediumItalic
Bodoni 72
-BodoniSvtyTwoITCTT-BookIta
-BodoniSvtyTwoITCTT-Book
-BodoniSvtyTwoITCTT-Bold
Baskerville
-Baskerville-SemiBoldItalic
-Baskerville-Bold
-Baskerville-Italic
-Baskerville-BoldItalic
-Baskerville-SemiBold
-Baskerville
Chalkboard SE
-ChalkboardSE-Regular
-ChalkboardSE-Bold
-ChalkboardSE-Light
Heiti TC
-STHeitiTC-Medium
-STHeitiTC-Light
Copperplate
-Copperplate
-Copperplate-Light
-Copperplate-Bold
Party LET
-PartyLetPlain
American Typewriter
-AmericanTypewriter-CondensedLight
-AmericanTypewriter-Light
-AmericanTypewriter-Bold
-AmericanTypewriter
-AmericanTypewriter-CondensedBold
-AmericanTypewriter-Condensed
Symbol
-Symbol
Avenir Next
-AvenirNext-Heavy
-AvenirNext-DemiBoldItalic
-AvenirNext-UltraLightItalic
-AvenirNext-HeavyItalic
-AvenirNext-MediumItalic
-AvenirNext-UltraLight
-AvenirNext-BoldItalic
-AvenirNext-DemiBold
-AvenirNext-Bold
-AvenirNext-Regular
-AvenirNext-Medium
-AvenirNext-Italic
Noteworthy
-Noteworthy-Light
-Noteworthy-Bold
Bangla Sangam MN
-BanglaSangamMN-Bold
-BanglaSangamMN
Zapfino
-Zapfino
Tamil Sangam MN
-TamilSangamMN
-TamilSangamMN-Bold
Chalkduster
-Chalkduster
Arial Hebrew
-ArialHebrew
-ArialHebrew-Bold
Georgia
-Georgia-Italic
-Georgia-BoldItalic
-Georgia-Bold
-Georgia
Helvetica Neue
-HelveticaNeue-Bold
-HelveticaNeue-CondensedBlack
-HelveticaNeue-Medium
-HelveticaNeue
-HelveticaNeue-Light
-HelveticaNeue-CondensedBold
-HelveticaNeue-LightItalic
-HelveticaNeue-UltraLightItalic
-HelveticaNeue-UltraLight
-HelveticaNeue-BoldItalic
-HelveticaNeue-Italic
Gill Sans
-GillSans-LightItalic
-GillSans-BoldItalic
-GillSans-Italic
-GillSans
-GillSans-Bold
-GillSans-Light
Palatino
-Palatino-Roman
-Palatino-Bold
-Palatino-BoldItalic
-Palatino-Italic
Courier New
-CourierNewPS-BoldMT
-CourierNewPSMT
-CourierNewPS-BoldItalicMT
-CourierNewPS-ItalicMT
Oriya Sangam MN
-OriyaSangamMN-Bold
-OriyaSangamMN
Didot
-Didot-Italic
-Didot
-Didot-Bold
Bodoni 72 Smallcaps
-BodoniSvtyTwoSCITCTT-Book
文本大小自适应
文本大小自适应需要调用NSString类的实例方法计算出文本的size,然后根据这个size来设定UILabel的frame来实现。计算size的方法有:
(1) - sizeWithFont:
- - (CGSize)countTextSize:(NSString *)text
- {
- /*
- 1、换行方式默认取NSLineBreakByWordWrapping;
- 2、求出的size是单行显示时的高度和宽度.
- */
- UIFont *font = [UIFont fontWithName:@"Arial" size:20.0f];
- CGSize size = [text sizeWithFont:font];
- return size;
- }
(2) - sizeWithFont: forWidth: lineBreakMode:
- - (CGSize)countTextSize:(NSString *)text
- {
- /*
- 1、如果指定宽度小于字符串宽度,则宽度返回0;
- 2、求出的size是单行显示时的高度和宽度.
- */
- UIFont *font = [UIFont fontWithName:@"Arial" size:20.0f];
- CGSize size = [text sizeWithFont:font forWidth:400.0f lineBreakMode:NSLineBreakByWordWrapping];
- return size;
- }
(3) - sizeWithFont: constrainedToSize:
- - (CGSize)countTextSize:(NSString *)text
- {
- /*
- 字符串用指定字体在指定区域进行单行显示时,需要的高度和宽度;
- 一般的用法是,指定区域的高度固定而宽度用MAXFLOAT,则返回值包含对应的宽度;
- 如果指定区域的宽度不够,则宽度返回0;高度不够则没影响;
- 核心:单行显示,指定区域的宽度要够大,获取宽度.
- */
- UIFont *font = [UIFont fontWithName:@"Arial" size:20.0f];
- CGSize size = [text sizeWithFont:font constrainedToSize:CGSizeMake(MAXFLOAT, 100.0f)];
- return size;
- }
(4) - sizeWithFont: constrainedToSize: lineBreakMode: (最常用)
- - (CGSize)countTextSize:(NSString *)text
- {
- /*
- 字符串在指定区域内按照指定的字体显示时,需要的高度和宽度(宽度在字符串只有一行时有用)
- 一般用法:指定区域的宽度而高度用MAXFLOAT,则返回值包含对应的高度
- 如果指定区域的宽度指定,而字符串要显示的区域的高度超过了指定区域的高度,则高度返回0
- 核心:多行显示,指定宽度,获取高度
- */
- UIFont *font = [UIFont fontWithName:@"Arial" size:20.0f];
- CGSize size = [text sizeWithFont:font constrainedToSize:CGSizeMake(320.f, MAXFLOAT) lineBreakMode:NSLineBreakByWordWrapping];
- return size;
- }
(5) - sizeWithFont: minFontSize: actualFontSize: forWidth: lineBreakMode:
- - (CGSize)countTextSize:(NSString *)text
- {
- /*
- 虽然指定了换行方式,在实际计算时也会换行,但返回的结果只是第一行的高度很宽度;
- 指定了应该显示的字体,最小的字体,实际的字体,在实际计算中,如果宽度不够,则尽量缩小字符串的字体直至能够一行全部显示,如果缩到最小还不能完全显示字符串,则进行截断,返回截断后的字符串的高度和宽度;
- 字体实际的大小,存放在 actualFontSize里.
- */
- UIFont *font = [UIFont fontWithName:@"Arial" size:20.0f];
- CGFloat f = 0.0f;
- CGSize size = [text sizeWithFont:font minFontSize:10.0f actualFontSize:&f forWidth:100.0f lineBreakMode:NSLineBreakByWordWrapping];
- return size;
- }
微信公众号: 猿人谷
如果您认为阅读这篇博客让您有些收获,不妨点击一下右下角的【推荐】
如果您希望与我交流互动,欢迎关注微信公众号
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。