zoukankan      html  css  js  c++  java
  • UILabel使用技巧

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

    [cpp] view plaincopy
     
    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] view plaincopy
     
    1. label.font = [UIFont fontWithName:@"fontName" size:17];  
    2. label.font = [label.font fontWithSize:17];  

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

    [cpp] view plaincopy
     
    1. label.font = [UIFont systemFontOfSize:17];  
    2. label.font = [UIFont boldSystemFontOfSize:17];  // 指定大小粗体  
    3. label.font = [UIFont italicSystemFontOfSize:17];  // 指定大小斜体  

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

    四、获取指定字体的familyName/fontName
    [cpp] view plaincopy
     
    1. NSString *familyName = [label.font familyName];  
    2. NSString *fontName = [label.font fontName];  

    五、获取系统标准字体大小
    [cpp] view plaincopy
     
    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] view plaincopy
     
    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] view plaincopy
     
    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] view plaincopy
     
    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] view plaincopy
     
    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] view plaincopy
     
    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://blog.csdn.net/mamong/article/details/8542404

     
  • 相关阅读:
    vector 指针结果 排序
    C++移位或与操作
    Win7如何显示/隐藏Administrator账号
    一些常用的工具
    发布单机端DELPHI程序访问MySQL必备文件
    DBX error:Driver could not be properly initialized .... 解决办法
    终止当前循环,退出循环,退出当前过程的指令的什么
    Delphi XE中使用dbExpress连接MySQL数据库疑难问题解决
    控件缩写大全
    ClienDataSet 随手笔计(1)
  • 原文地址:https://www.cnblogs.com/heyonggang/p/3508754.html
Copyright © 2011-2022 走看看