博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UILabel使用技巧
阅读量:5877 次
发布时间:2019-06-19

本文共 11844 字,大约阅读时间需要 39 分钟。

 

UILabel的各种属性与方法的使用(转)

 

[cpp] 
 
  1. #import "LabelTestViewController.h"       
  2. @implementation LabelTestViewController       
  3. /*    
  4.  Accessing the Text Attributes    
  5.  text  property      
  6.  font  property      
  7.  textColor  property      
  8.  textAlignment  property      
  9.  lineBreakMode  property        
  10.  enabled  property      
  11.  Sizing the Label’s Text    
  12.  adjustsFontSizeToFitWidth  property      
  13.  baselineAdjustment  property      
  14.  minimumFontSize  property   无例    
  15.  numberOfLines  property      
  16.  Managing Highlight Values    
  17.  highlightedTextColor  property      
  18.  highlighted  property      
  19.  Drawing a Shadow    
  20.  shadowColor  property      
  21.  shadowOffset  property      
  22.  Drawing and Positioning Overrides    
  23.  – textRectForBounds:limitedToNumberOfLines: 无例     
  24.  – drawTextInRect:  无例    
  25.  Setting and Getting Attributes    
  26.  userInteractionEnabled  property      
  27.  */      
  28. // Implement viewDidLoad to do additional setup after loading the view, typically from a nib.       
  29. - (void)viewDidLoad {       
  30.     UILabel *label1 = [[UILabel alloc]initWithFrame:CGRectMake(50.0, 20.0, 200.0, 50.0)];       
  31.     UILabel *label2 = [[UILabel alloc]initWithFrame:CGRectMake(50.0, 80.0, 200.0, 50.0)];       
  32.     UILabel *label3 = [[UILabel alloc]initWithFrame:CGRectMake(50.0, 140.0, 200.0, 50.0)];       
  33.     UILabel *label4 = [[UILabel alloc]initWithFrame:CGRectMake(50.0, 200.0, 200.0, 50.0)];       
  34.     UILabel *label5 = [[UILabel alloc]initWithFrame:CGRectMake(50.0, 260.0, 200.0, 50.0)];       
  35.     UILabel *label6 = [[UILabel alloc]initWithFrame:CGRectMake(50.0, 320.0, 200.0, 50.0)];       
  36.     UILabel *label7 = [[UILabel alloc]initWithFrame:CGRectMake(50.0, 380.0, 200.0, 50.0)];       
  37.     //设置显示文字       
  38.     label1.text = @"label1";       
  39.     label2.text = @"label2";       
  40.     label3.text = @"label3--label3--label3--label3--label3--label3--label3--label3--label3--label3--label3--";       
  41.     label4.text = @"label4--label4--label4--label4--";       
  42.     label5.text = @"label5--label5--label5--label5--label5--label5--";       
  43.     label6.text = @"label6";       
  44.     label7.text = @"label7";       
  45.     //设置字体:粗体,正常的是 SystemFontOfSize       
  46.     label1.font = [UIFont boldSystemFontOfSize:20];       
  47.     //设置文字颜色    
  48.     label1.textColor = [UIColor orangeColor];       
  49.     label2.textColor = [UIColor purpleColor];       
  50.     //设置文字位置       
  51.     label1.textAlignment = UITextAlignmentRight;       
  52.     label2.textAlignment = UITextAlignmentCenter;       
  53.     //设置字体大小适应label宽度       
  54.     label4.adjustsFontSizeToFitWidth = YES;       
  55.     
  56.     //设置label的行数       
  57.     label5.numberOfLines = 2;      
  58.     UIlabel.backgroudColor=[UIColor clearColor]; //可以去掉背景色     
  59.    
  60.     //设置高亮       
  61.     label6.highlighted = YES;       
  62.     label6.highlightedTextColor = [UIColor orangeColor];       
  63.     //设置阴影       
  64.     label7.shadowColor = [UIColor redColor];       
  65.     label7.shadowOffset = CGSizeMake(1.0,1.0);       
  66.     //设置是否能与用户进行交互       
  67.     label7.userInteractionEnabled = YES;       
  68.     //设置label中的文字是否可变,默认值是YES       
  69.     label3.enabled = NO;       
  70.     //设置文字过长时的显示格式       
  71.     label3.lineBreakMode = UILineBreakModeMiddleTruncation;//截去中间       
  72. //  typedef enum {       
  73. //      UILineBreakModeWordWrap = 0,       
  74. //      UILineBreakModeCharacterWrap,       
  75. //      UILineBreakModeClip,//截去多余部分       
  76. //      UILineBreakModeHeadTruncation,//截去头部       
  77. //      UILineBreakModeTailTruncation,//截去尾部       
  78. //      UILineBreakModeMiddleTruncation,//截去中间       
  79. //  } UILineBreakMode;       
  80.     //如果adjustsFontSizeToFitWidth属性设置为YES,这个属性就来控制文本基线的行为       
  81.     label4.baselineAdjustment = UIBaselineAdjustmentNone;       
  82. //  typedef enum {       
  83. //      UIBaselineAdjustmentAlignBaselines,       
  84. //      UIBaselineAdjustmentAlignCenters,       
  85. //      UIBaselineAdjustmentNone,       
  86. //  } UIBaselineAdjustment;       
  87.     [self.view addSubview:label1];       
  88.     [self.view addSubview:label2];       
  89.     [self.view addSubview:label3];       
  90.     [self.view addSubview:label4];       
  91.     [self.view addSubview:label5];       
  92.     [self.view addSubview:label6];       
  93.     [self.view addSubview:label7];       
  94.     [label1 release];       
  95.     [label2 release];       
  96.     [label3 release];       
  97.     [label4 release];       
  98.     [label5 release];       
  99.     [label6 release];       
  100.     [label7 release];       
  101.     [super viewDidLoad];       
  102. }       
  103. /*    
  104.  // Override to allow orientations other than the default portrait orientation.    
  105.  - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {    
  106.  // Return YES for supported orientations    
  107.  return (interfaceOrientation == UIInterfaceOrientationPortrait);    
  108.  }    
  109.  */      
  110. - (void)didReceiveMemoryWarning {       
  111.     // Releases the view if it doesn't have a superview.       
  112.     [super didReceiveMemoryWarning];       
  113.     // Release any cached data, images, etc that aren't in use.       
  114. }       
  115. - (void)viewDidUnload {       
  116.     // Release any retained subviews of the main view.       
  117.     // e.g. self.myOutlet = nil;       
  118. }       
  119. - (void)dealloc {       
  120.     [super dealloc];       
  121. }       
  122. @end   

 


 

UIFont字体设置

 

一、创建任意样式字体

 

[cpp] 
 
  1. label.font = [UIFont fontWithName:@"fontName" size:17];  
  2. label.font = [label.font fontWithSize:17];  

 

二、创建指定大小的系统默认字体(默认:Helvetica)

 

[cpp] 
 
  1. label.font = [UIFont systemFontOfSize:17];  
  2. label.font = [UIFont boldSystemFontOfSize:17];  // 指定大小粗体  
  3. label.font = [UIFont italicSystemFontOfSize:17];  // 指定大小斜体  
三、获取可用的字体名数组

 

 

[cpp] 
 
  1. NSArray *fontFamilies = [UIFont familyNames];                           // 返回所有可用的fontFamily  
  2. NSArray *fontNames = [UIFont fontNamesForFamilyName:@"fongFamilyName"]; // 返回指定fontFamily下的所有fontName  
四、获取指定字体的familyName/fontName

 

 

[cpp] 
 
  1. NSString *familyName = [label.font familyName];  
  2. NSString *fontName = [label.font fontName];  
五、获取系统标准字体大小

 

 

[cpp] 
 
  1. CGFloat labelFontSize = [UIFont labelFontSize];    // Returns the standard font size used for labels.  
  2. CGFloat buttonFontSize = [UIFont buttonFontSize];  // Returns the standard font size used for buttons.  
  3. CGFloat smallSystemFontSize = [UIFont smallSystemFontSize]; // Returns the size of the standard small system font.  
  4. 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: 

[cpp] 
 
  1. - (CGSize)countTextSize:(NSString *)text  
  2. {  
  3.     /* 
  4.      1、换行方式默认取NSLineBreakByWordWrapping; 
  5.      2、求出的size是单行显示时的高度和宽度. 
  6.      */  
  7.     UIFont *font = [UIFont fontWithName:@"Arial" size:20.0f];  
  8.     CGSize size = [text sizeWithFont:font];  
  9.     return  size;  
  10. }  

(2)  - sizeWithFont: forWidth: lineBreakMode:

[cpp] 
 
  1. - (CGSize)countTextSize:(NSString *)text  
  2. {  
  3.     /* 
  4.      1、如果指定宽度小于字符串宽度,则宽度返回0;  
  5.      2、求出的size是单行显示时的高度和宽度. 
  6.      */  
  7.     UIFont *font = [UIFont fontWithName:@"Arial" size:20.0f];  
  8.     CGSize size = [text sizeWithFont:font forWidth:400.0f lineBreakMode:NSLineBreakByWordWrapping];  
  9.     return  size;  
  10. }  

(3)  - sizeWithFont: constrainedToSize:

[cpp] 
 
  1. - (CGSize)countTextSize:(NSString *)text  
  2. {  
  3.     /* 
  4.      字符串用指定字体在指定区域进行单行显示时,需要的高度和宽度; 
  5.      一般的用法是,指定区域的高度固定而宽度用MAXFLOAT,则返回值包含对应的宽度; 
  6.      如果指定区域的宽度不够,则宽度返回0;高度不够则没影响; 
  7.      核心:单行显示,指定区域的宽度要够大,获取宽度. 
  8.      */  
  9.     UIFont *font = [UIFont fontWithName:@"Arial" size:20.0f];  
  10.     CGSize size = [text sizeWithFont:font constrainedToSize:CGSizeMake(MAXFLOAT, 100.0f)];  
  11.     return  size;  
  12. }  

(4)  - sizeWithFont: constrainedToSize: lineBreakMode:  (最常用)

[cpp] 
 
  1. - (CGSize)countTextSize:(NSString *)text  
  2. {  
  3.     /* 
  4.      字符串在指定区域内按照指定的字体显示时,需要的高度和宽度(宽度在字符串只有一行时有用) 
  5.      一般用法:指定区域的宽度而高度用MAXFLOAT,则返回值包含对应的高度 
  6.      如果指定区域的宽度指定,而字符串要显示的区域的高度超过了指定区域的高度,则高度返回0 
  7.      核心:多行显示,指定宽度,获取高度 
  8.      */  
  9.     UIFont *font = [UIFont fontWithName:@"Arial" size:20.0f];  
  10.     CGSize size = [text sizeWithFont:font constrainedToSize:CGSizeMake(320.f, MAXFLOAT) lineBreakMode:NSLineBreakByWordWrapping];  
  11.     return  size;  
  12. }  

(5)  - sizeWithFont: minFontSize: actualFontSize: forWidth: lineBreakMode:

[cpp] 
 
  1. - (CGSize)countTextSize:(NSString *)text  
  2. {  
  3.     /* 
  4.      虽然指定了换行方式,在实际计算时也会换行,但返回的结果只是第一行的高度很宽度; 
  5.      指定了应该显示的字体,最小的字体,实际的字体,在实际计算中,如果宽度不够,则尽量缩小字符串的字体直至能够一行全部显示,如果缩到最小还不能完全显示字符串,则进行截断,返回截断后的字符串的高度和宽度;  
  6.      字体实际的大小,存放在 actualFontSize里. 
  7.      */  
  8.     UIFont *font = [UIFont fontWithName:@"Arial" size:20.0f];  
  9.     CGFloat f = 0.0f;   
  10.     CGSize size = [text sizeWithFont:font minFontSize:10.0f actualFontSize:&f forWidth:100.0f lineBreakMode:NSLineBreakByWordWrapping];  
  11.     return  size;  
  12. }  

 

参考资料:

 

转载地址:http://cczix.baihongyu.com/

你可能感兴趣的文章
C# 解决窗体闪烁
查看>>
CSS魔法堂:Transition就这么好玩
查看>>
【OpenStack】network相关知识学习
查看>>
centos 7下独立的python 2.7环境安装
查看>>
[日常] 算法-单链表的创建
查看>>
前端工程化系列[01]-Bower包管理工具的使用
查看>>
使用 maven 自动将源码打包并发布
查看>>
Spark:求出分组内的TopN
查看>>
Python爬取豆瓣《复仇者联盟3》评论并生成乖萌的格鲁特
查看>>
关于跨DB增量(增、改)同步两张表的数据小技巧
查看>>
飞秋无法显示局域网好友
查看>>
学员会诊之03:你那惨不忍睹的三层架构
查看>>
vue-04-组件
查看>>
Golang协程与通道整理
查看>>
解决win7远程桌面连接时发生身份验证错误的方法
查看>>
C/C++ 多线程机制
查看>>
js - object.assign 以及浅、深拷贝
查看>>
python mysql Connect Pool mysql连接池 (201
查看>>
Boost在vs2010下的配置
查看>>
android camera(四):camera 驱动 GT2005
查看>>