UILabel类的用法以及实例化对象的各种属性介绍

在以前的xcode版本中,练习的时候都会选择空模板,并在AppDelegate.m中的didFinishLaunchingWithOptions中书写代码实例化控件对象(比如标签),然后最终用[self.window addSubview:对象]的方法显示出来。

但xcode最新的几个版本中,已经没有空模板选项,而是单MVC模板,所以需要在ViewController.m的viewDidLoad中书写代码,并用[self.view addSubview:label1]来显示控件。

以下是label标签的属性:

- (void)viewDidLoad {
    //初始化一个label1标签对象,初始化有很多方法,最原始的就是init,此处用带有frame的方法
    UILabel *label1=[[UILabel alloc]initWithFrame:CGRectMake(30, 30, 300, 30)];
    //设置内容
    [email protected]"我是 label 123 hello world 你好吗?在家吗?";
    //设置文字颜色
    label1.textColor=[UIColor whiteColor];
    //设置标签背景,clearColor是透明背景的意思
    label1.backgroundColor=[UIColor redColor];
    //设置文字对齐
    label1.textAlignment=NSTextAlignmentCenter;
    //设置字体,UIFont类有很多设置字体的方法,CMD+点击可查看。
    label1.font=[UIFont boldSystemFontOfSize:23];
    //这个字体设置会覆盖上面的设置,但字是否会倾斜加粗则需要看具体的字体
    label1.font=[UIFont italicSystemFontOfSize:23];
    //打印出所有系统字体,也是用得UIFont里一个方法,可CMD+点击查看
    NSArray *arr1=[UIFont familyNames];
    for (NSString *name in arr1) {
        NSLog(@"%@",name);
    }
    //一般可用,同时修改字体和字号的方法
    label1.font=[UIFont fontWithName:@"Georgia" size:40];
    //设置阴影颜色
    label1.shadowColor=[UIColor blackColor];
    //设置阴影偏移值,需要CGSizeMake值,第一个表示左右偏移,>0向右;第二个表示上下偏移,>0向下
    label1.shadowOffset=CGSizeMake(2, 5);
    //设置高亮,如果设置为YES,则下面的高亮颜色会替换原先的textColor,而如果设置为No,或者高亮没开启,则高亮颜色设置无效,还是显示textColor值
    label1.highlighted=YES;
    label1.highlightedTextColor=[UIColor redColor];
    //根据标签大小自动调整文字大小,如否不开启,则多余的文字用...表示
    label1.adjustsFontSizeToFitWidth=YES;
    //文字与标签的对齐,依次是文本顶端、中间、底端于标签的中线对齐。可CMD+点击以下任意一个值,发现这是一枚举,默认值是UIBaselineAjustmentAlignBaselines
    //以下方法仅当只有一行文本时有效
    label1.baselineAdjustment=UIBaselineAdjustmentAlignBaselines;
    label1.baselineAdjustment=UIBaselineAdjustmentAlignCenters;
    label1.baselineAdjustment=UIBaselineAdjustmentNone;

    UILabel *label2=[[UILabel alloc]initWithFrame:CGRectMake(30, 80, 300, 80)];
    [email protected]"hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world hello world ";
    //文字很多时,还是显示1行,最后以...省略
    //设置显示的行数,0是不限制多少行,但由于标签高度一定,如果显示不下,最终仍以...省略
    label2.numberOfLines=0;
    //设置换行和最后截断/省略
    //NSLineBreakByWordWrapping-以单词为单位换行,以单词为单位截断(即没有...,显示不了的直接截断不显示),默认,CMD+点击发现也是一枚举
    //NSLineBreakByCharWrapping-以字符为单位换行,以字符为单位截断
    //NSLineBreakByClipping-以单词为单位换行,以字符为单位截断
    //NSLineBreakByTruncatingHead-以单位为单位换行,以字符为单位截断,但最后一行的前面是...省略,如果是一行,则就在一行的开头有...
    //NSLineBreakByTruncatingTail-以单位为单位换行,以字符为单位截断,但最后一行的末尾是...省略,如果是一行,则就在一行的末尾有...
    //NSLineBreakByTruncatingMiddle-以单位为单位换行,以字符为单位截断,但最后一行的中间是...省略,如果是一行,则就在一行的中间有...
    label2.lineBreakMode=NSLineBreakByTruncatingHead;

    //根据内容调整标签大小,三部曲
    UILabel *label3=[[UILabel alloc]initWithFrame:CGRectZero];
    [email protected]"标签3 标签3 标签3 标签3 标签3 标签3 标签3 标签3 标签3 标签3 标签3 标签3 标签3 标签3 标签3 标签3 标签3 标签3";
    //1、计算内容大小,即获得高和宽,其实宽一般都给定了,只是计算高,而高宽二位对象一般是一个CGSize
    CGSize size1=[label3.text sizeWithFont:label3.font constrainedToSize:CGSizeMake(300, 1000) lineBreakMode:NSLineBreakByCharWrapping];
    //2、设置显示行数,即不限制函数
    label3.numberOfLines=0;
    //3、利用size1设置标签的宽和高
    label3.frame=CGRectMake(30, 180, size1.width, size1.height);
    //把上面初始化的标签label1、2、3增加到当前的view里,一并显示出来
    [self.view addSubview:label1];
    [self.view addSubview:label2];
    [self.view addSubview:label3];
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}
时间: 2024-10-11 13:07:31

UILabel类的用法以及实例化对象的各种属性介绍的相关文章

深入理解Java对象的创建过程:类的初始化与实例化

"-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 深入理解Java对象的创建过程:类的初始化与实例化 - Rico's Blogs - 博客频道 - CSDN.NET Rico's Blogs 潜心修炼,成为一个更好的人. 目录视图 摘要视图 订阅 [活动]2017 CSDN博客专栏评选 &nbsp [5月书讯]流畅

java反射-反射实例化对象-反射获得构造方法-反射获得普通方法-获得属性

链接:https://www.zhihu.com/question/24304289/answer/38218810来源:知乎著作权归作者所有,转载请联系作者获得授权. Class<?> cls = Class.forName("cn.mldn.demo.Person"); // 取得Class对象 第一步:获得对象,构造方法,普通方法,属性 Object obj = cls.newInstance() Constructor<?> cons = cls.get

C++只在栈或堆上实例化对象

C++如何让类对象只能在堆(栈)上分配空间 一般情况下写一个类都是可以采用new在堆上分配空间,或直接采用 类名+对象名 的方式在栈上分配空间.但有时候,如果想让一个类只能在栈上或者堆上分配空间,又该怎么实现呢? 下面分别来介绍如何定义只能在栈上或堆上实例化的类. 注:1.静态实例化对象 如 A a;的步骤为:先由编译器为对象在栈空间分配内存,移动栈顶指针,挪出适当的空间,然后在这个空间上调用构造函数形成一个对象,在对象使用完之后,调用析构函数回收内存,栈顶指针减一.2.动态实例化对象:new操

OC类中一些细节问题(对象类存储、类中结构体的用法)

一:OC中得方法名 注意:方法名冒号和后面的and方法名冒号  都是方法名 一:对象的存储细节 类加载到代码区(包括类中得属性和方法).对象动态加载到堆内存中.指向对象的指针存放在栈区. 三:定义类常见的错误 定义类的时候,常见的错误 1)类的定义不能嵌套 2)不要漏写 @end 3) 不要忘记写实现类(如果忘记写了,编译不会报错,运行时候才报错) 4)定义成员变量的大括号经常漏写 5) 如果不写@interface 只有 @implementation 这可以,但是会报警告,建议不要这么写 6

C++类的实例化对象的大小之sizeof()

之所以写这篇<C++类的实例化对象的大小之sizeof()>,是因为在参加笔试的时候遇到如下这么一道题,当时感觉就是这个一个坑,但,我还是义无反顾的跳了下去,因为存在知识点盲区啊.现,总结一下,你不知道的C++类的实例化对象的大小之sizeof(). class D { public: D() { } virtual ~D() { } private: int a ; char *p; }; 实例一: class A { }; A a; cout << sizeof(a) <

2016/3/21 面向对象: ①定义类 ②实例化对象 ③$this关键字 ④构造函数 ⑤析构函数 ⑥封装 ⑦继承

一:定义类   二:实例化对象 1 //定义类 2 class Ren 3 { 4 var $name; 5 var $sex; 6 var $age; 7 8 function Say() 9 { 10 echo "{$this->name}在说话"; 11 } 12 } 13 //实例化对象 14 $Ren = new Ren(); 15 //调用对象的成员: 16 $Ren->name = "张三"; 17 $Ren->Say(); 显示结果

JavaSE-子类实例化对象的过程

package com.btp.t1; //子类对象实例化的全过程 /*1.当最底层子类实例化对象时,它的父类,父类的父类...到Object类的所有类的构造器都会被调用,只不过当一个类拥有多个构造器时,调用的是其中一个. *2.子类构造器内,默认调用父类构造器:super();当有this关键字时,就不调用父类构造器了,就会调用同一个类内的其他构造器,所以一个类当有n个构造器时,仅允许最多有n-1个构造器内使用this关键字,最少有一个构造器去调用上层父类的构造器. *3.当父类重载一个构造器

波哥学JAVA,定义类 创建对象 实例化对象 属性 类调用属性或者方法

定义类 声明对象  创建对象 实例化对象 属性 对象调用属性或者方法 举例,下面定义类了一个类并声明属性,写了一个方法: 创建对象 实例化对象 属性 类调用属性或者方法

【很变态】PHP类实例化对象竟然可以访问类的“静态(static)方法”!!!

之前发现一个PHP的变态问题:PHP中静态(static)调用非静态方法详解 这次看了下 ThinkPHP 的源码 function.inc.php ,里面有个函数: /** * 取得对象实例 支持调用类的静态方法 * * @param string $name 类名 * @param string $method 方法 * @param string $args 参数 * @return object 对象实例 */ function get_instance_of($name, $metho