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

  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. //设置label的行数
  56. label5.numberOfLines = 2;
  57. UIlabel.backgroudColor=[UIColor clearColor]; //可以去掉背景色
  58. //设置高亮
  59. label6.highlighted = YES;
  60. label6.highlightedTextColor = [UIColor orangeColor];
  61. //设置阴影
  62. label7.shadowColor = [UIColor redColor];
  63. label7.shadowOffset = CGSizeMake(1.0,1.0);
  64. //设置是否能与用户进行交互
  65. label7.userInteractionEnabled = YES;
  66. //设置label中的文字是否可变,默认值是YES
  67. label3.enabled = NO;
  68. //设置文字过长时的显示格式
  69. label3.lineBreakMode = UILineBreakModeMiddleTruncation;//截去中间
  70. //  typedef enum {
  71. //      UILineBreakModeWordWrap = 0,
  72. //      UILineBreakModeCharacterWrap,
  73. //      UILineBreakModeClip,//截去多余部分
  74. //      UILineBreakModeHeadTruncation,//截去头部
  75. //      UILineBreakModeTailTruncation,//截去尾部
  76. //      UILineBreakModeMiddleTruncation,//截去中间
  77. //  } UILineBreakMode;
  78. //如果adjustsFontSizeToFitWidth属性设置为YES,这个属性就来控制文本基线的行为
  79. label4.baselineAdjustment = UIBaselineAdjustmentNone;
  80. //  typedef enum {
  81. //      UIBaselineAdjustmentAlignBaselines,
  82. //      UIBaselineAdjustmentAlignCenters,
  83. //      UIBaselineAdjustmentNone,
  84. //  } UIBaselineAdjustment;
  85. [self.view addSubview:label1];
  86. [self.view addSubview:label2];
  87. [self.view addSubview:label3];
  88. [self.view addSubview:label4];
  89. [self.view addSubview:label5];
  90. [self.view addSubview:label6];
  91. [self.view addSubview:label7];
  92. [label1 release];
  93. [label2 release];
  94. [label3 release];
  95. [label4 release];
  96. [label5 release];
  97. [label6 release];
  98. [label7 release];
  99. [super viewDidLoad];
  100. }
  101. /*
  102. // Override to allow orientations other than the default portrait orientation.
  103. - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
  104. // Return YES for supported orientations
  105. return (interfaceOrientation == UIInterfaceOrientationPortrait);
  106. }
  107. */
  108. - (void)didReceiveMemoryWarning {
  109. // Releases the view if it doesn't have a superview.
  110. [super didReceiveMemoryWarning];
  111. // Release any cached data, images, etc that aren't in use.
  112. }
  113. - (void)viewDidUnload {
  114. // Release any retained subviews of the main view.
  115. // e.g. self.myOutlet = nil;
  116. }
  117. - (void)dealloc {
  118. [super dealloc];
  119. }
  120. @end

UIFont字体设置

一、创建任意样式字体

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

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

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

三、获取可用的字体名数组

  1. NSArray *fontFamilies = [UIFont familyNames];                           // 返回所有可用的fontFamily
  2. NSArray *fontNames = [UIFont fontNamesForFamilyName:@"fongFamilyName"]; // 返回指定fontFamily下的所有fontName

四、获取指定字体的familyName/fontName

  1. NSString *familyName = [label.font familyName];
  2. NSString *fontName = [label.font fontName];

五、获取系统标准字体大小

  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:

  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:

  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:

  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:  (最常用)

  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:

  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

 

UILabel使用技巧的更多相关文章

  1. iOS开发小技巧--即时通讯项目:使用富文本在UILabel中显示图片和文字;使用富文本占位显示图片

    Label借助富文本显示图片 1.即时通讯项目中语音消息UI的实现,样式如图: 借助富文本在UILabel中显示图片和文字 // 1.创建一个可变的富文本 NSMutableAttributedStr ...

  2. 【读书笔记】iOS-开发技巧-UILabel内容模糊的原因

    在非Retina的iPad mini的屏幕上,一个UILabel的frame的origin值如果有小数位数(例如,0.5),就会造成显示模糊.所以最好用整数值的origin坐标. 参考资料: < ...

  3. iOS开发小技巧 - UILabel添加中划线

    iOS开发小技巧 遇到的问题: 给Label添加中划线,然后并没有效果 NSString *str = [NSString stringWithFormat:@"合计金额 ¥%.2f&quo ...

  4. IOS UILabel的一些使用小技巧

    1. 你在iOS6的需要NSLineBreakByWordWrapping 为了您的代码试试这个: NSString *string = @"bla"; CGSize s = [s ...

  5. iOS:小技巧(不断更新)

    记录下一些不常用技巧,以防忘记,复制用. 1.获取当前的View在Window的frame: UIWindow * window=[[[UIApplication sharedApplication] ...

  6. iOS-调试技巧

    目录 前言逼优鸡知己知彼 百战不殆抽刀断Bug 普通操作 全局断点(Global BreakPoint) 条件断点(Condational Breakpoints)打印的艺术 NSLog 开启僵尸对象 ...

  7. iOS 保持界面流畅的技巧 (转载)

    这篇文章会非常详细的分析 iOS 界面构建中的各种性能问题以及对应的解决思路,同时给出一个开源的微博列表实现,通过实际的代码展示如何构建流畅的交互. Index 演示项目 屏幕显示图像的原理 卡顿产生 ...

  8. 如何让iOS 保持界面流畅?这些技巧你知道吗

    如何让iOS 保持界面流畅?这些技巧你知道吗   作者:ibireme这篇文章会非常详细的分析 iOS 界面构建中的各种性能问题以及对应的解决思路,同时给出一个开源的微博列表实现,通过实际的代码展示如 ...

  9. iOS各种调试技巧豪华套餐

    转载自http://www.cnblogs.com/daiweilai/p/4421340.html 目录 前言 逼优鸡 知己知彼 百战不殆 抽刀断Bug 普通操作 全局断点(Global Break ...

随机推荐

  1. 动态链接库中函数的地址确定---PLT和GOT [转]

    前面写过动态链接库 延迟绑定的一篇博文,那篇文章我非常喜欢,但是当时刚搞清楚,自己写的比较凌乱,我最近学习了Ulrich Drepper的How to write share library,学习了几 ...

  2. #你好Unity3D#Hierarchy视图监听gameObject点击事件

    今天无意间又找到了个好方法     1 2 3 4 5 6 7 8 9 10 [InitializeOnLoadMethod] static void Start () {   Selection.s ...

  3. C++运算符重载详解

    1.什么是运算符重载 运算符重载是一种函数重载. 运算符函数的格式:operatorop(argument-list)例如,operator+()重载+运算符.其中的op,必须是有效的C++运算符,如 ...

  4. @Resource注解

    原文地址:http://blog.sina.com.cn/s/blog_a795a96f01016if1.html   @Resource 注解被用来激活一个命名资源(named resource)的 ...

  5. 1kkk

    代码: # !usr/bin/python3.4 # -*- coding:utf-8 -*- import requests import os import time import re from ...

  6. BouncyCastle产生一个PKCS#12规范的PFX/p12证书

    RT,在C#中实现,依赖.netFramework2.0 BouncyCastle中提供了PKCS12Store,Pkcs12StoreBuilder,AsymmetricKeyEntry,X509C ...

  7. line-height让文本在块级元素中居中显示总结

    一.总结: line-height不仅可以用在段落文本中控制行与行之间的间距,还可以用来控制文本在li这种块级元素中的位置. 文本行间距的大小由字体的大小决定,行间距的大小的设置方法有5种方式:

  8. Python基础教程【读书笔记】 - 2016/7/31

    希望通过博客园持续的更新,分享和记录Python基础知识到高级应用的点点滴滴! 第十波:第10章  充电时刻 Python语言的核心非常强大,同时还提供了更多值得一试的工具.Python的标准安装包括 ...

  9. 23. Merge k Sorted Lists

    Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity. = ...

  10. 黄聪:PHP字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、切割成数组等)

    一.字符串替换 str_replace("iwind", "kiki", "i love iwind, iwind said"); 将输出 ...