一、简介
UIlabel是继承于UIView的,所以UIView的方法他都能用。
写一个UILabel首先要完成frame和背景颜色的设置,就是UIView的设置。
ios7不设置label才是透明背景,前面的版本,不设置背景默认是白色。
所以:
若要适配所有IOS版本,需求又是label背景透明,那么需要设置label的背景颜色为透明,否则ios7以下的版本,会看见一堆白色补丁
label.backgroundColor = [UIColor clearColor];//透明色。
二、UILabel独有的属性和方法:
label.text =@"高大上";
//文本对齐方式
label.textAlignment =NSTextAlignmentCenter;//字体居中显示
//字体颜色
label.textColor = [UIColorlightGrayColor];
//字体大小
//systemFontOfSize此为系统默认字体。
label.font = [UIFontsystemFontOfSize:24];
//boldSystemFontOfSize为粗体
label.font = [UIFontboldSystemFontOfSize:24];
label2.backgroundColor = [UIColoryellowColor];
label2.text =@"我去去去去轻轻轻轻的生产线在线SD A ASD时代复分嘎嘎嘎灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌倒萨飞凤飞飞飞飞反反复复反复了;昆明城市里打开才能顺利的承诺你才收到;飞美术读法爱上读法水电费是 说的方法分开了啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦水电费了可能卢萨卡答复您收到了客服奶萨的离开飞洒地方呢阿斯顿阿斯顿妇女撒的客服但是看了烦恼阿斯顿了看法呢阿里山那地方凯撒的法律看啥地方哪受得了你发那是的烦恼李师傅你阿萨德";
字体大小适应label宽度,别太过分,正好差几个字时用这个糊弄糊弄,差多了用这个就不合适。( label2.adjustsFontSizeToFitWidth = YES;)
label2.numberOfLines =0;//设置为字有多少行,就显示多少行,但是不会超出View的大小
[self.windowaddSubview:label2];
[label2 release];
//设置字体大小
label2.font = [UIFontsystemFontOfSize:11];//一般字体最小就11号,再小就不好看了。
label的高度适应文本的内容。(此为IOS7后的方法)
ios6之前的方法和ios7之后的方法不一样的,所以如果这个功能想要适配所有系统的版本的话,要先判断系统版本,不同版本对应不同方法。(if判断)
//1.要有一个字符串】
NSString *tempStr =@"真诚推荐,源自天然深层地下水,雀巢优活拥有清冽双扣好味道,每一口都是清新健康的预约享受。";
//2.准备一个字典,得告诉程序一会儿你的字体多大,程序才能根据字体大小分配高度
NSDictionary *attributeDic = @{NSFontAttributeName:[UIFontsystemFontOfSize:16]};
//这里的key是NSFontAttributeName,value是[UIFont systemFontOfSize:16],可以换别的字体,也可改变字号。
//注意,这里的字号要与一会儿label的字号一样。
//3.计算第一步的字符串使用第二部字典里的的字体,需要占多大地儿。(矩形)
//注意:我需要知道最大矩形有多宽,到哪儿开始换行
//用字符串来调用
//第一个参数:是我们准备的矩形的最大尺寸(宽和高)
//第二个参数:换行规则
/*
NSStringDrawingTruncatesLastVisibleLine 根据字体
NSStringDrawingUsesFontLeading 根据行距
NSStringDrawingUsesLineFragmentOrigin 根据一行这么个矩形
*/
//第三个参数:就是第二步做的字典
CGRect rect = [tempStrboundingRectWithSize:CGSizeMake(320,MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesFontLeading|NSStringDrawingTruncatesLastVisibleLine attributes:attributeDic context:nil];
//这样就可以算出来tempStr这个字符串,最大宽度320的时候,他所占的宽度。
//一个rect是一个结构体,有四个参数{{x,y},{width,height}},这四个数都是浮点型的。
//怎么取出来
float height = rect.size.height;//取出来算好了的字符串的高度,这个高度将写在label的frame的height那个位置。
//第四步
//宽要是刚才的最大宽,高时算出来的。
UILabel *tempLabel = [[UILabel alloc] initWithFrame:CGRectMake(0,20, 320, height)];
//保证label字体和第二部字典里的字体一样(类型、大小)
tempLabel.font = [UIFontsystemFontOfSize:16];
//别忘了设置
tempLabel.text = tempStr;
[self.windowaddSubview:tempLabel];
tempLabel.backgroundColor = [UIColorgreenColor];
tempLabel.numberOfLines =0;//设置文字换行,numberOfLines为1时显示1行,0时有多少显示多少。上限是label的高度和字体的高度磨合的结果。
[tempLabel release];
IOS6之前的方法
//第一步有一个字符串
NSString *sixStr =@"的没事的门口阿斯蒂芬你阿斯蒂芬你水泥地方是的减肥呢阿萨德防水等级开放撒大部分巴萨的妇科病空降神兵";
//第二部,直接开始算(宽和高)
//第一个参数是字体第二个参数是最大宽高 第三个参数是换行规则
CGSize sixStrSize = [sixStrsizeWithFont:[UIFontsystemFontOfSize:16]constrainedToSize:CGSizeMake(320,MAXFLOAT) lineBreakMode:NSLineBreakByCharWrapping];
//第三部,取出算好的高度
float sixHeight = sixStrSize.height;
//第四部,和前面一样
UILabel *sixLabel = [[UILabel alloc]initWithFrame:CGRectMake(80,20, 100, sixHeight)];
sixLabel.backgroundColor = [UIColorredColor];
sixLabel.font = [UIFontsystemFontOfSize:16];
sixLabel.numberOfLines=0;
sixLabel.text = sixStr;
[self.windowaddSubview:sixLabel];
[sixLabel release];
三、UIImageView使用(也是UIView的子类)
UIImageView专门用来贴图片用的。
1.其独有用法
把图片从硬盘读到内存(一)
UIImage *image1 =[UIImageimageNamed:@"nav_bg.png"];
//把读到内存的图片image对象赋给imageView的image属性。
imageView1.image = image1;
//上面的imageView的frame是写死的,
//所以有些时候,imageView的frame由UIImage对象来决定。
//1.先读image
UIImage *girlFirst = [UIImage imageNamed:@"1.png"];
//2.写UIImageView,宽和高等于上面的image的宽高
UIImageView *imageView2 =[[UIImageView alloc]initWithFrame:CGRectMake(0,64, girlFirst.size.width, girlFirst.size.height)];
imageView2.image = girlFirst;
[self.windowaddSubview:imageView2];
[imageView2 release];
把图片读取出来的方法(二)
//1.找到文件的路径
NSString *imagePath = [[NSBundlemainBundle] pathForResource:@"1"ofType:@".png"];
//2.从路径中取图片,参数是文件路径
UIImage *lastImage = [UIImage imageWithContentsOfFile:imagePath];
//3.剩下就是创建imageView那点事而。
UIImageView *lastImageView = [[UIImageViewalloc] initWithFrame:self.window.frame];
lastImageView.image = lastImage;
[view addSubview:lastImageView];
[lastImageView release];
注:imageNamed和imageWithContentsOfFile的优缺点
从缓存读,占缓存 不占缓存
快 慢
使用规则:小图片,重复使用次数多的图片,用imageNamed。大图片,不怎么用的图片用imageWithContentsOfFile。
四、图片动画的使用
设置动画图片的动画图片数组
animateImageView.animationImages = @[[UIImage imageNamed:@"1.png"],[UIImage imageNamed:@"2.png"],[UIImage imageNamed:@"3.png"],[UIImage imageNamed:@"4.png"]];//此处的接收到的数组内容为一个UIImage对象,而不是字符串。。此处也可以用可变数组动态添加对象进去。
设置动画间隔,此间格为一轮的间隔,不是每两张的之间的间隔。
animateImageView.animationDuration = 2;
设置动画是否重复
animateImageView.animationRepeatCount = 0;
开始动画
[animateImageView startAnimating];
[view addSubview:animateImageView];
[animateImageView release];