课程要点:

  • 控件之间的继承关系、
  • UILabel
  • UIImageView
  • 利用UIImageView实现帧动画
  • 补充

试图之间的继承关系

昨天学习UIView的时候,了解到UIView里面有以下几个常用属性

* backGroundColor:背景颜色

* alpha:透明度

* subViews:子试图集合

* hidden:是否隐藏

* tag:标签值

* superview:父试图

我们从这些基本属性可以发现,UIView里面没有属性让在文字显示在试图上面,也就是说UIView这个试图,无法满足咱的需求。此时UILabel就应运而生。在深入学习UILabel之前,咱们需要先研究一下UIView与UILabel的关系。

 [self.window makeKeyAndVisible];      

 //首先按照咱们创建控件的三步走创建一个UILbale,并把他在Window上。
UILabel *testLabel = [[UILabel alloc]init]; //按住command的同时鼠标点击frame,此时咱们能查看到关于frame属性的API
testLabel.frame = CGRectMake(, , , ); [self.window addSubview:testLabel];

出现这种情况的主要原因是UILable继承于UIView,由于UILabel跟UIView有很多通用的属性,因此系统的UILabel类直接采用继承的方式,避免了在UILabel中写重复的属性。

PS:在工程里,我们怎么查看UILabel类是继承于谁的。按住Command的同时点击该类名。系统会自动定位到该类的.h文件中的interface部分,冒号部分是谁,就表示这个类继承于谁。在做项目的过程中学会怎么查看API以及习惯于查看API

UILabel:他是一个标签试图,继承UIView,不适合放太多的文本内容。

    //首先创建一个UILabel对象
UILabel *testLabel = [[UILabel alloc]init]; //设置testLabel的位置和大小
testLabel.frame = CGRectMake(, , , ); //设置testLabel的背景颜色
testLabel.backgroundColor = [UIColor grayColor]; //给testLabel设置字符串
testLabel.text = @"全球领先的移动设备操作系统"; //给testLabel设置字体颜色
testLabel.textColor = [UIColor greenColor]; //给testLabel设置对其方式
testLabel.textAlignment = NSTextAlignmentCenter; //给testLabel设置字体大小
testLabel.font = [UIFont systemFontOfSize:]; //给testLabel设置阴影颜色
// testLabel.shadowColor = [UIColor blackColor]; //给testLabel设置阴影偏移量 此时你可以试试如果此时填的是(-5,-5)会是什么效果
// testLabel.shadowOffset = CGSizeMake(10, 10); //给testLabel设置行数 1是一行显示 2是两行显示 0是根据内容自适应函数
testLabel.numberOfLines = ; //根据testLabel的宽高自动设置字体大小,从而让内容全部显示出来
testLabel.adjustsFontSizeToFitWidth = YES; [self.window addSubview:testLabel];

UIImageView:图片试图,继承UIView,主要用来显示图片

怎么在工程里放图片

 //创建一个试图对象
UIImageView *imgView = [[UIImageView alloc]init]; //如果图片是PNG格式的,图片名不需要加后缀,否则都要加后缀
imgView.image = [UIImage imageNamed:@“图片名字"]; //在某个方向上让图片自适应,已达到最好看的效果。
imgeView.contentMode = UIViewContentModeScaleAspectFit; //让图片充满整个frame
imgeView.contentMode = UIViewContentModeScaleToFill;
//取到图片的相应位置,并放到屏幕上,会超出设置的图片试图Frame
imgeView.contentMode = UIViewContentModeRight; //裁剪掉超出试图frame的部分
imgeView.clipsToBounds = YES; //给试图设置frame
imgView.frame = CGRectMake(, , , ); //将试图放在window上
[self.window addSubview:imgView];

用UIImageView设置一个帧动画

  /*
* 创建帧动画四要素
1、设置间隔时间
2、准备图片素材
3、设置重复次数
4、开始动画
5、结束动画
*/ //animationDuration设置动画的时间间隔
imgView.animationDuration = ; UIImage *img1 = [UIImage imageNamed:@“图片名字”]; UIImage *img2 = [UIImage imageNamed:@"图片名字"]; NSArray *array = @[img1,img2]; //给帧动画准备素材
imgView.animationImages = array; //给动画设置重复次数
imgView.animationRepeatCount = ; //开始动画
[imgView startAnimating]; //结束动画
[imgView stopAnimating]; PS:UIImageView与UIImage的区别,UIImageView他就好比是一块专门放图片的位置,UIImage对象就是你要放置的图片。

补充

#import "AppDelegate.h"

/*
* 宏定义格式: #define k常量名 @"" * 作用:宏定义就是用内容替换变量名,不仅可以替换字符串还可以替换一句代码 * 命名规则:k+驼峰命名法,例如:kCotent */
//
//
#define kContent @"我改过的内容"
#define kLabelX label.frame.origin.x
#define kScreenWidth [UIScreen mainScreen].bounds.size.height @interface AppDelegate () @end @implementation AppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { #pragma mark 补充
/* * 延迟方法performselector * CGRectGetHeight(<#CGRect rect#>) * [UIScreen mainScreen].bounds.origin * 宏定义 * 宏定义的使用技巧 */ [self.window makeKeyAndVisible]; //延迟多少秒后执行相应的方法,用selector选择的方法一定要实现,否则会崩溃。
[self performSelector:@selector(start) withObject:nil afterDelay:]; UILabel *label = [[UILabel alloc]init]; label.frame = CGRectMake(, , , ); label.backgroundColor = [UIColor redColor]; label.text = kContent; //此时用到宏定义,试着按住command的同时点击kScreenWidth [self.window addSubview:label];
// 获取到label的x值方式
// //第一种方式
// NSLog(@"label的x=%f",kLabelX);
// //第二种方式(这种方式还能获取到空间的最右边中间的x值,试着用看UILabel是继承哪个类的方式来查看怎么获取到label高,宽)
// NSLog(@"label的x=%f",CGRectGetMinX(label.frame)); //UIScreen指的就是屏幕,能帮组我们获取到各种屏幕的宽和高,再次我用宏定义来获取
NSLog(@"屏幕的高=%f",kScreenWidth); return YES;
} - (void)start{ }

UI-2-UILabel&UIImageView-补充的更多相关文章

  1. iOS开发UI篇—在UIImageView中添加按钮以及Tag的参数说明

    ios开发UI篇—在ImageView中添加按钮以及Tag的参数说明 一.tag参数 一个视图通常都只有一个父视图,多个子视图,在开发中可以通过使用子视图的tag来取出对应的子视图.方法为Viewwi ...

  2. UI基础视图----UIImageView总结

    UIImageView和UILabel一样,也是UIKit框架中非常常用的视图类.继承关系和UILabel完全一致(都是继承于UIView),功能也相似(用户交互都默认为关,主要用于展示),只不过UI ...

  3. IOS开发UI基础UILabel属性

    UILabel属性 1.text:设置标签显示的文本. 2.attributedText:设置标签属性文本. Ios代码 NSString *text = @"first";  N ...

  4. swift学习笔记-UI篇之UIImageView

    1.基本使用 将要使用的图片拖入到项目里,我这里使用的是名为“1.jpg”的图片,然后创建UIImageView,并设置要显示的图片为"1.jpg"//1. 基本使用 let im ...

  5. IOS UI篇—UILabel的文字顶部对齐

    UILabel的文字顶部对齐 NOV 20TH, 2011 默认UILabel是垂直居中对齐的,如果你的UILabel高度有多行,当内容少的时候,会自动垂直居中. 如下图所示(图片来自stackove ...

  6. UI基础:UILabel.UIFont

    UILabel:标签 继承自UIView ,在UIView基础上扩充了显示文本的功能.(文本框) UILabel的使用步骤 1.创建控件 UILabel *aLabel=[[UILabel alloc ...

  7. IOS开发-UI学习-UIImageView控件

    在页面上展现本地图片: // 使用本地图片 // 先初始化UIImageView myImageV = [[UIImageView alloc]initWithFrame:CGRectMake(, , ...

  8. UI基础:UILabel.UIFont 分类: iOS学习-UI 2015-07-01 19:38 107人阅读 评论(0) 收藏

    UILabel:标签 继承自UIView ,在UIView基础上扩充了显示文本的功能.(文本框) UILabel的使用步骤 1.创建控件 UILabel *aLabel=[[UILabel alloc ...

  9. ios开发UI篇--UILabel

    概述 UILabel类实现了一个只读文本视图.你可以使用这个类来画一个或多个静态文本.UILabel类支持既简单又复杂的样式标签文本,还可以控制外观,比如标签是否使用了一个影子或者处于高亮状态等等. ...

  10. (2) iOS开发之UI处理-UILabel篇

    我们经常要根据内容去动态计算控件的高度,比如一个UILabel控件,常常要显示多行内容,并且计算出总高度,如果每个UILabel要多行显示,都要写这么一段代码是非常痛苦的,看代码如下:     我想大 ...

随机推荐

  1. [Hybrid App]--Android混合开发,Android、Js的交互

    AndroidJs通信 *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !imp ...

  2. 一年的天数 Exercise06_16

    /** * @author 冰樱梦 * 时间:2018年下半年 * 题目:一年的天数 * */ public class Exercise06_16 { public static void main ...

  3. Session集中式管理

          Asp.net Session集中式管理主要有StateServer(状态服务器).Sqlserver(数据库服务器).自定义(如Redis缓存服务器)等,本文主要介绍StateServe ...

  4. npm使用常见问题及注意事项

    1.npm.cnpm.yarn不要混用,一个项目只使用一个 2.NPM problem: npm ERR! extraneous 表明安装了很多不需要的三方包 使用命令 npm prune删除无用的包 ...

  5. What's New In DevTools (Chrome 59)来看看最新Chrome 59的开发者工具又有哪些新功能

    原文:https://developers.google.com/web/updates/2017/04/devtools-release-notes#command-menu 参考:https:// ...

  6. 使用.reg文件删除暴风影视库图标和注册信息

    暴风播放器安装后会自动安装一个叫暴风影音库的软件,在你的电脑资源管理器中增加了一个“暴风影视库”的图标.看着很烦,删起来还比较麻烦,于是搜索了相关资源,自己写了个注册表处理文件,方便大家一键删除之. ...

  7. Netty 中文教程 (二) Hello World !详解

    1.HelloServer 详解 HelloServer首先定义了一个静态终态的变量---服务端绑定端口7878.至于为什么是这个7878端口,纯粹是笔者个人喜好.大家可以按照自己的习惯选择端口.当然 ...

  8. IStorage

    IStorage 接口支持结构化存储对象的创建和管理. 结构化存储允许分层存储在单个文件的信息,和通常被称为“文件系统内文件”. 元素的结构化存储对象存储和小溪. 存储类似于目录,和流类似于文件. 在 ...

  9. iOS学习笔记23-音效与音乐

    一.音频 在iOS中,音频播放从形式上能够分为音效播放和音乐播放. * 音效: * 主要指一些短音频的播放,这类音频一般不须要进行进度.循环等控制. * 在iOS中.音效我们是使用AudioToolb ...

  10. 【Python3 爬虫】12_代理IP的使用

    我们在爬取页面的时候,如果长时间使用一个网址去爬取某个网站,就会受爬去限制,此时,我们引用了代理IP,IP随时在变化,也就不会被限制了 一下是国内提供免费代理IP的地址:http://www.xici ...