1.frame\center\bounds

1> frame:能修改位置和尺寸

2> center:能修改位置

3> bounds:能修改尺寸(x\y一般都是0)

2.在.m中声明的方法是私有方法,外界无法直接访问,保证了封装性

3.UIView 一般翻译叫做:视图\控件\组件

UIButton、UILabel、UITextField都继承自UIView

3.1.UIImageView和UIButton

1> 使用场合

* UIImageView: 如果仅仅是显示图片,不需要监听图片的点击

* UIButton: 既要显示图片,又要监听图片的点击

2> 相同:能显示图片

3> 不同点

* UIButton能处理点击事件, UIImageView不能处理点击事件

* UIButton既能显示图片, 又能显示文字

* UIButton能同时显示两张图片

* UIButton继承自UIControl, 因此默认就能处理事件  UIButton --> :UIControl -->:UIView

* UIImageView继承自UIView, 因此默认就不能处理事件 UIImageView --> :UIView

4> 如何选择

UIButton:需要显示图片,点击图片后需要做一些特定的操作

UIImageView:仅仅需要显示图片,点击图片后不需要做任何事情

4.键盘的显示与隐藏

resignFirstResponder

当叫出键盘的那个控件(第一响应者)调用这个方法时,就能退出键盘

endEditing

只要调用这个方法的控件内部存在第一响应者,就能退出键盘

5.常用按钮的状态

normal(普通状态)

默认情况(Default)

对应的枚举常量:UIControlStateNormal

highlighted(高亮状态)

按钮被按下去的时候(手指还未松开)

对应的枚举常量:UIControlStateHighlighted

disabled(失效状态,不可用状态)

如果enabled属性为NO,就是处于disable状态,代表按钮不可以被点击

对应的枚举常量:UIControlStateDisabled

6.一个UIColor代表一种颜色,通过UIColor的类方法,可以获得很多常用的颜色

+ (UIColor *)blackColor;      // 0.0 white 黑色

+ (UIColor *)darkGrayColor;   // 0.333 white 深灰色

+ (UIColor *)lightGrayColor;  // 0.667 white 亮灰色

+ (UIColor *)whiteColor;      // 1.0 white 白色

+ (UIColor *)grayColor;       // 0.5 white 灰色

+ (UIColor *)redColor;        // 1.0, 0.0, 0.0 RGB 红色

+ (UIColor *)greenColor;      // 0.0, 1.0, 0.0 RGB 绿色

+ (UIColor *)blueColor;       // 0.0, 0.0, 1.0 RGB 蓝色

+ (UIColor *)cyanColor;       // 0.0, 1.0, 1.0 RGB 青色

+ (UIColor *)yellowColor;     // 1.0, 1.0, 0.0 RGB 黄色

+ (UIColor *)magentaColor;    // 1.0, 0.0, 1.0 RGB 品红

+ (UIColor *)orangeColor;     // 1.0, 0.5, 0.0 RGB 橙色

+ (UIColor *)purpleColor;     // 0.5, 0.0, 0.5 RGB 紫色

+ (UIColor *)brownColor;      // 0.6, 0.4, 0.2 RGB 棕色

+ (UIColor *)clearColor;      // 0.0 white, 0.0 alpha 清除颜色(空色)

7. 一个UIImage对象代表一张图片,一般通过imageNamed:方法就可以通过文件名加载项目中的图片

(文件名可以省略扩展名)

UIImage *image = [UIImage imageNamed:@"btn_01"];

8. NSBundle

1> 一个NSBundle代表一个文件夹,利用NSBundle能访问对应的文件夹

2> 利用mainBundle就可以访问软件资源包中的任何资源

9. 将属性放在get方法中初始化的方式,称为“懒加载”\”延迟加载”

10. UIImageView帧动画相关属性和方法

@property(nonatomic,copy) NSArray *animationImages;

需要播放的序列帧图片数组(里面都是UIImage对象,会按顺序显示里面的图片)

@property(nonatomic) NSTimeInterval animationDuration;

帧动画的持续时间

@property(nonatomic) NSInteger animationRepeatCount;

帧动画的执行次数(默认是无限循环)

- (void)startAnimating;

开始执行帧动画

- (void)stopAnimating;

停止执行帧动画

- (BOOL)isAnimating;

是否正在执行帧动画

11. UIImage的2种加载方式

方式一:有缓存(图片所占用的内存会一直停留在程序中)

+ (UIImage *)imageNamed:(NSString *)name;

name是图片的文件名

方式二:无缓存(图片所占用的内存会在一些特定操作后被清除)

+ (UIImage *)imageWithContentsOfFile:(NSString *)path

- (id)initWithContentsOfFile:(NSString *)path;

path是图片的全路径

  例如:

 1.1 定义 UIImageView

UIImageView *imgView = [[UIImageView alloc] initWithFrame:[UIScreen mainScreen].bounds];

1.2 定义 NSMutableArray 保存所有图片

NSMutableArray *animationImgsArrM = [[NSMutableArray alloc] init];

int num = 40;

for(int i = 0 ; i <= num  ; i++ ){

图片的名称

NSString *imgName = [NSString stringWithFormat:@"%@_%02d.jpg", imgView, i ];

在创建比较小的,并且常用的图片时,可以使用imageNamed:方法创建

UIImage *img = [UIImage imageNamed:imgName];

如果创建的图片很多,并且比较大的话,应该使用这种方式创建

NSString *filePath = [[NSBundle mainBundle] pathForResource:imgName ofType:nil];

UIImage *img = [[UIImage alloc]initWithContentsOfFile:filePath];

把图片添加到数组中

[animationImgsArrM addObject:img];

}

12. 用模型取代字典的好处

1> 使用字典的坏处:

一般情况下,设置数据和取出数据都使用“字符串类型的key”,编写这些key时,编译器不会有任何友善提示,需要手敲

dict[@"name"] = @"Jack";

NSString *name = dict[@"name"];

手敲字符串key,key容易写错

Key如果写错了,编译器不会有任何警告和报错,造成设错数据或者取错数据

2> 使用模型的好处:

所谓模型,其实就是数据模型,专门用来存放数据的对象,用它来表示数据会更加专业

模型设置数据和取出数据都是通过它的属性,属性名如果写错了,编译器会马上报错,因此,保证了数据的正确性

使用模型访问属性时,编译器会提供一系列的提示,提高编码效率

app.name = @"Jack”;

NSString *name = app.name;

13. instancetype

instancetype在类型表示上,跟id一样,可以表示任何对象类型

instancetype只能用在返回值类型上,不能像id一样用在参数类型上

instancetype比id多一个好处:编译器会检测instancetype的真实类型

14. Xib文件可以用来描述某一块局部的UI界面

Xib文件的加载

方法1

NSArray *objs = [[NSBundle mainBundle] loadNibNamed:@"AppView" owner:nil options:nil];

这个方法会创建xib中的所有对象,并且将对象按顺序放到objs数组中

方法2

bundle参数可以为nil,默认就是main bundle

UINib *nib = [UINib nibWithNibName:@"MJAppView" bundle:[NSBundle mainBundle]];

NSArray *objs = [nib instantiateWithOwner:nil options:nil];

在开发阶段,面向开发者的是xib文件; 当把应用装到手机上时,xib文件就会转为nib文件

15. Xib和storyboard对比

1> 共同点:

都用来描述软件界面

都用Interface Builder工具来编辑

2> 不同点

Xib是轻量级的,用来描述局部的UI界面

Storyboard是重量级的,用来描述整个软件的多个界面,并且能展示多个界面之间的跳转关系

16. UILabel的常见设置

@property(nonatomic,copy)   NSString           *text;

显示的文字

@property(nonatomic,retain) UIFont             *font;

字体

@property(nonatomic,retain) UIColor            *textColor;

文字颜色

@property(nonatomic)        NSTextAlignment    textAlignment;

对齐模式(比如左对齐、居中对齐、右对齐)

17. UIFont --> UIFont代表字体,常见创建方法有以下几个:

+ (UIFont *)systemFontOfSize:(CGFloat)fontSize;   系统默认字体

+ (UIFont *)boldSystemFontOfSize:(CGFloat)fontSize;  粗体

+ (UIFont *)italicSystemFontOfSize:(CGFloat)fontSize;  斜体

18. UIButton的常见设置

- (void)setTitle:(NSString *)title forState:(UIControlState)state;

设置按钮的文字

- (void)setTitleColor:(UIColor *)color forState:(UIControlState)state;

设置按钮的文字颜色

- (void)setImage:(UIImage *)image forState:(UIControlState)state;

设置按钮内部的小图片

- (void)setBackgroundImage:(UIImage *)image forState:(UIControlState)state;

设置按钮的背景图片

btn.titleLabel.font = [UIFont systemFontOfSize:13];

设置按钮的文字字体(需要拿到按钮内部的label来设置)

- (NSString *)titleForState:(UIControlState)state;

获得按钮的文字

- (UIColor *)titleColorForState:(UIControlState)state;

获得按钮的文字颜色

- (UIImage *)imageForState:(UIControlState)state;

获得按钮内部的小图片

- (UIImage *)backgroundImageForState:(UIControlState)state;

获得按钮的背景图片

19.使用xib封装一个自定义view的步骤

1> 新建一个继承UIView的自定义view,假设类名叫做(AppView)

2> 新建一个MJAppView.xib文件来描述MJAppView内部的结构

3> 修改UIView的类型为MJAppView真是类型

4> 将内部的子控件跟MJAppView进行属性连线

5> MJAppView提供一个模型属性

6> 重写模型属性的set方法,因为在set方法中可以拿到外界传递的模型数据

7> 把模型数据拆开,分别设置数据到对应的子控件中

8> 提供一个创建MJAppView的类方法,将读取xib文件的代码屏蔽起来

  

  20. 清屏

  [[self.view subviews]makeObjectsPerformSelector:@selector(removeFromSuperview)];

  

UI- 基础控件零散知识点回归的更多相关文章

  1. UI基础控件—UIView

    1. 什么是UIView?     UIView :代表屏幕上的一个矩形区域,管理界面上的内容; 2. 创建UIview a.开辟空间并初始化视图(初始化时,给出视图位置和大小) b.对视图做一些设置 ...

  2. Cocos2d-JS项目之二:studio基础控件的使用

    在studio里把几个基础控件往场景文件一拖,然后导出json格式的资源文件 逻辑代码如下: var HelloWorldLayer = cc.Layer.extend({ sprite:null, ...

  3. [iOS基础控件 - 5.5] 代理设计模式 (基于”APP列表"练习)

    A.概述      在"[iOS基础控件 - 4.4] APP列表 进一步封装,初见MVC模式”上进一步改进,给“下载”按钮加上效果.功能      1.按钮点击后,显示为“已下载”,并且不 ...

  4. Cocos2d-JS studio基础控件的使用

    在studio里把几个基础控件往场景文件一拖,然后导出json格式的资源文件 逻辑代码如下: 1 var HelloWorldLayer = cc.Layer.extend({ 2 sprite:nu ...

  5. QMUI UI库 控件 弹窗 列表 工具类 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  6. Atitit.获取swing ui 按钮控件的id 与名字 与JPDA 调试体系

    Atitit.获取swing ui 按钮控件的id 与名字 与JPDA 调试体系 1. Swing Inspector是一个Java Swing/AWT用户界面分析和调试工具,功能与firebug类似 ...

  7. React Native环境搭建以及几个基础控件的使用

    之前写了几篇博客,但是没有从最基础的开始写,现在想了想感觉不太合适,所以现在把基础的一些东西给补上,也算是我从零开始学习RN的经验吧! 一.环境搭建 首先声明一下,本人现在用的编辑器是SublimeT ...

  8. UI输入控件

    --UI输入控件 -- 输入控件 cc.uii.UIInput.new(table) --[[ 参数 table{ image 输入框图像,可以为图片名或者display.newScale9Sprit ...

  9. UWP学习记录10-设计和UI之控件和模式7

    UWP学习记录10-设计和UI之控件和模式7 1.导航控件 Hub,中心控件,利用它你可以将应用内容整理到不同但又相关的区域或类别中. 中心的各个区域可按首选顺序遍历,并且可用作更具体体验的起始点. ...

随机推荐

  1. C#笔试面试宝典值得收藏

    又是一年换工作纠结的季节,前一阵子由于工作的缘故,薪资降低,加之被其他部门以莫须有的罪名投诉:固然愤慨之,遂升起离职念想,下面是这几天电话面试和笔试中常问到的问题汇总,给大家分享下,不足之处往大神拍砖 ...

  2. pycharm修改配置

    恢复pycharm的初始设置

  3. 在Ubuntu上安装Chrome浏览器和ChromeDriver

    启动脚本后报错 selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable may have w ...

  4. 微信小程序组件text

    基础内容text:官方文档 Demo Code var initData = 'this is first line\nthis is second line' var extraLine = []; ...

  5. LeetCode:每日温度【739】

    LeetCode:每日温度[739] 题目描述 根据每日 气温 列表,请重新生成一个列表,对应位置的输入是你需要再等待多久温度才会升高的天数.如果之后都不会升高,请输入 0 来代替. 例如,给定一个列 ...

  6. 初学hadoop的个人历程

       在学习hadoop之前,我就明确了要致力于大数据行业,成为优秀的大数据研发工程师的目标,有了大目标之后要分几步走,然后每一步不断细分,采用大事化小的方法去学习hadoop.下面开始叙述我是如何初 ...

  7. HDU 1501 Zipper 【DFS+剪枝】

    HDU 1501 Zipper [DFS+剪枝] Problem Description Given three strings, you are to determine whether the t ...

  8. websocket redis实现集群即时消息聊天

    websocket与redismq实现集群消息聊天 1.application.properties server.port=8081 #thymeleaf配置 #是否启用模板缓存. spring.t ...

  9. Django学习笔记之Django Form表单

    Form介绍 我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来. 与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户是否 ...

  10. React Native常用组件之ListView组件

    学习iOS开发的同学应该都知道UITableView,几乎每个APP中都有它的存在,而且衍生出各种形态:那么同样,ListView就是在React Native中的tableView,而且更加简单和灵 ...