user interface
UI(user interface)
搭建软件界面 (UI)
发送网络请求 多线程
网络数据解析
UIImageView (图片)
UILabel (文本标签)
UIButton (按钮)
UISwitch (开关)
UIProgressView (进度条)
UITextField (文本框)
UIkit创建和管理应用程序的用户界面
QuartzCore 提供动画特效以及通过硬件进行渲染的能力
CoreGraphics 提供2D绘制的基与C的API
CoreLocation 使用GPS和WIFI获取位置信息
加法计算器:
UIView
屏幕上能看见的东西都是UIView(或者继承与UIView)
每一个UIView都是一个容器能容纳其他UIView
父控件包含子控件
UIViewController
每当显示一个界面先创建UIViewController再由UIViewController创建UIView
每个UIViewController控制一个全屏的UIView
Touch up inside单击事件
IBAction
能保证方法可以连线
相当于void
用来监听一些事件
IBOutlet
能保证属性可以连线
用来改变控件的属性
Bundle identifier app的唯一标识
company identifier公司的唯一标识
退出键盘
1.第一响应者:叫出键盘的控件
[self.num2 resignFirstResponder]; //让第一响应者不当第一响应者
2.[self.view endEditing:YES];
常见报错(连线出问题了):setValues:forUndefinedKey:]:this class is not key value coding
常见报错(方法找不到):unrecognized selector sent to instance
类扩展 (私有扩展)
@interface ViewController ()
@end
UIView的常见属性:
@property(nonatomic, readonly) UIView *superview;
获得自己的父控件对象
@property(nonatomic, readonly, copy) NSArray *subview;
获得自己的所有子控件对象
@property(nonatomic) NSInteger tag;
控件的ID\标识 父控件可以通过tag来找到对应的子控件
@property(nonatomic) CGAffineTransform transform;
控件的形变属性(可以设置旋转角度 比例缩放平移等属性)
@property(nonatomic) CGRect frame;
控件所在矩形框在父控件中的位置 尺寸(以父控件的左上角为坐标原点)
@property(nonatomic) CGRect bounds;
控件所在矩形的位置尺寸(以自己左上角为坐标原点所以bounds的x y值一般为0)
@property(nonatomic) CGPoint center;
控件中点的位置(以父控件的左上角为坐标原点)
frame\center\bounds
1.frame:能修改位置和属性
2.center:能修改位置
3.bounds:能修改尺寸(x\y一般都是0)
UIButton
normal(普通状态)(默认)
对应的枚举常量:UIControlStateNormal
highlighted(高亮状态)
对应的枚举常量:UIControlStateHighlighted
disabled(失效状态不可用状态)
对应的枚举常量:UIControlStateDisabled
不允许直接修改对象的结构体属性的成员
允许直接修改对象的结构体属性
修改frame属性(origin(x,y)位置 size(width,height)尺寸)
1.取出原来的属性
2.改变临时的属性
3.用临时属性覆盖原来的属性
动画
头尾式:
[UIView beginAnimations:nil context:nil]; //开始动画
[UIView setAnimationDuration:(float)] //默认为1/4秒
[UIView commitAnimations] //提交动画
Block式:
[UIView animateWithDuration:0.5 animations:^{
}];
界面的初始化:
#pragma mark控制器的view加载完毕的时候调用
- (void)viewDidLoad
{
[super viewDidLoad];
//创建按钮
UIButton *btn = [UIButton buttonWithType:UIbuttonWithTypeCustom];
//添加按钮
[self.view addSubview:btn];
//设置frame
btn.frame = CGRectMake(100,100,100,100);
// 设置背景色
btn.backgroundColor = [UIColor blueColor];
// 设置背景图片
UIImage *image = [UIImage imageNamed:@“btn_01”]; //通过文件名加载图片(凡是PNG图片都不用加扩展名)
[btn setBackgroundImage:(UIImage *)forState:(UIControlState)];
// 监听按钮点击
[btn addTarget:self action:@selector(up) forControlEvents:UIControlEventTouchUpInside];
}
- (void)up
{
NSLog(@“——”);
}
transform属性(位置尺寸 旋转角度)
- (IBAction)up{
// 取得头像按钮
UIButton *head = (UIButton *)[self.view viewWithTag:10];
// 每次向上移动100的距离
head.transform =CGAffineTransformMakeTranslation(0,-100); //在原来x y方向增加减少多少距离
head.transform =CGAffineTransformTranslate(head.transform,0,-100); //连续增加减少多少距离
}
- (IBAction)leftRotate{
// 取得头像按钮
UIButton *head = (UIButton *)[self.view viewWithTag:10];
//向左旋转45°
head.transform =CGAffineTransformMakeRotation(-M_PI_4); //在原来基础上旋转
head.transform =CGAffineTransformRotate(head.transform,-M_PI_4); //连续旋转
}
- (IBAction)big{
// 取得头像按钮
UIButton *head = (UIButton *)[self.view viewWithTag:10];
//向左旋转45°
head.transform =CGAffineTransformMakeScale(1.5,1.5); //在原来基础上缩放
head.transform =CGAffineTransformScale(head.transform,1.5,1.5); //连续缩放
}
图片浏览器(UIImageView)
序列帧动画
/**=======*/ 文档注释(放在要注释的内容的上面敲代码的时候会有提示)
使用场合:
1.如果仅仅显示图片不需要监听图片的点击事件选择UIImageView
2.如果显示图片又监听图片的点击事件选择UIButton
UIButton中含有ImageView,Label
contentMode是UIView的属性可以调整视图里面的内容位置
字典转模型
模型:存储数据
copy:NSString
assign:基本数据类型
strong:一般对象
weak:UI控件
xib:描述软件界面轻量级 一般用来描述局部界面
storyboard:描述软件界面重量级 一般用来描述整个软件的所有界面
// 读取xib文件(会创建xib中的描述的所有对象并且按顺序放到数组中返回)
NSArray *objes = [[NSBundle mainBundle] loadNibNamed:@“MYxib” owner:nil options:nil];
封装:
3.使用xib封装一个自定义view的步骤
1>新建一个继承UIView的自定义view,假设类名叫做(MJAppView)
2>新建一个MJAppView.xib文件来描述MJAppView内部的结构
3>修改UIView的类型为MJAppView真是类型
4>将内部的子控件跟MJAppView进行属性连线
5> MJAppView提供一个模型属性
6>重写模型属性的set方法,因为在set方法中可以拿到外界传递的模型数据
7>把模型数据拆开,分别设置数据到对应的子控件中
8>补充:提供一个创建MJAppView的类方法,将读取xib文件的代码屏蔽起来
MVC:
M:Model数据模型
V:View视图(界面)
C:Controller(控制器)
Auto layout默认自动布局
// 删除父控件里的所有子控件
[self.answer.subViews makeObjectsPerform:@selecter(removeFormSuperView)];
Retina视网膜屏幕
所谓Retina屏幕就是高清视网膜屏幕 分辨率宽高是标准屏幕分辨率的2倍
只要文件名叫做Icon.png 就会自动被当做是应用程序的图标
一个app在启动过程中会全屏显示叫做Default.png的图片
UIScrollView
三个重要的属性:
scrollView.contentSize内容的尺寸大小 CGSize
scrollView.contentOffset内容的偏移量 CGPoint
scrollView.contentInsert内容的上下左右边距 CGRect
代理设计模式用途
监听的思想:可以让一个对象(代理)监听另一个对象(委托方)的状态
通知的思想:一个对象状态发生改变想通知另一个对象
// 停止定时器
[timer invalidate];
timer = nil; // 停止时候就把指针指向空释放定时器对象
// 开始定时器
[timer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(xxx) userInfo:nil repeats:YES];
userInteractionEnabled UIView的属性可以修改能不能与用户交互属性(包括点击事件) 父控件不能交互则它的所有子控件都不能交互
UITableView(表格视图)
dataSource 数据源
delegate 代理
cell.textLabel
cell.detailTextLabel (UITabelViewCellStyleSubtitle)
cell.imageView
cell复用机制:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
// 从缓存池中找到可以循环利用的cell
static NSString * cellID = @“cellID”;
UITableView * cell = [tableView dequeueResuableCellWithidentifier:cellID];
// 如果找不到就重新创建一个cell
if (!cell) {
cell = [[UITableView alloc] initWithStyle:UITableViewCellStyleDefault reuseidentifier:cellID];
}
//设置cell的内容
cell.textLabel.text = @“”;
cell.imageView.image = [UIImageView imageNamed:@“”];
}
数据刷新:
1.修改模型数据
2.重新加载模型中的数据
全部刷新:
[tableView reloadData];
局部刷新:
NSString * path = [NSIndexPath indexPathForRow:row inSection:section];
[tableView reloadRowAtIndexPaths:@[path] withRowAnimation:UITableViewRowAnimationBottom];
自定义cell
1.通过xib自定义cell
2.通过代码自定义cell
self.tableView.tableFooterView //tableView的尾部视图
self.tableView.tableHeaderView //tableView的顶部视图
如何利用xib封装View
1.新建一个xib文件描述一个view的内部结构
2.新建一个新的类(继承自某个系统自带的view 继承哪个类 取决于xib根对象的class)
3.新建类的类名最好与xib的文件名保持一致
4.将xib的控件与自定义的类连线
5.提供一个类方法快速返回一个创建好的自定义view(屏蔽从xib加载这个过程)
代理的规范:
1.协议名称:控件类名 + delegate
2.代理方法普遍都是@optional
3.把委托方当做参数加到协议方法中
4.在委托方调代理实现方法时先判断代理有没有实现这个方法
user interface相关推荐
- Go 学习笔记(71)— Go 接口 interface (接口定义、接口实现、接口调用、值接收者、指针接收者)
1. 接口的定义 接口是和调用方的一种约定,它是一个高度抽象的类型,不用和具体的实现细节绑定在一起.接口要做的是定义好约定,告诉调用方自己可以做什么,但不用知道它的内部实现,这和我们见到的具体的类型如 ...
- Static interface methods are only supported starting with Android N (--min-api 24): void okhttp3.log
错误内容如下 Error: Static interface methods are only supported starting with Android N (--min-api 24): vo ...
- Go 学习笔记(35)— Go 接口 interface (接口声明、接口初始化、接口方法调用、接口运算、类型断言、类型查询、空接口)
1. 接口概念 接口是双方约定的一种合作协议.接口实现者不需要关心接口会被怎样使用,调用者也不需要关心接口的实现细节.接口是一种类型,也是一种抽象结构,不会暴露所含数据的格式.类型及结构. 接口内部存 ...
- Go 学习笔记(4)— Go 标识符、数据类型之间转换、布尔型、整型、浮点型、interface 类型
1. 标识符整体分类 Go 标识符整体分类如下图所示: 2. 数据类型分类 Go 语言按类别有以下几种数据类型: 类型 描述 布尔型 布尔型的值只可以是常量 true 或者 false 数字类型 整型 ...
- php 类 接口的区别吗,PHP的接口类(interface)和抽象类(abstract)的区别
/** * 接口类:interface * 其实他们的作用很简单,当有很多人一起开发一个项目时,可能都会去调用别人写的一些类, * 那你就会问,我怎么知道他的某个功能的实现方法是怎么命名的呢,这个时候 ...
- java interface list_你了解注解内的@interface List么
Annotation, Multi-valued annotation, nested annotation, 多值注解, 嵌套注解 今天在研究Spring MVC的Validation机制时(这里 ...
- TypeScript学习笔记之 接口(Interface)
在java中,接口是用来定义一些规范,使用这些接口,就必须实现接口中的方法,而且接口中的属性必须是常量. javascript中是没有接口的概念的.所以TypeScript在编译成 JavaScrip ...
- 演示:思科IPS在线模式下Inline Interface Mode的响应行为(区别各个防御行为)
演示:思科IPS在线模式下Inline Interface Mode的响应行为 演示目标:科IPS在线模式下InlineInterface Mode的响应行为. 演示环境:仍然使用图5.16所示的网络 ...
- php中的抽象类(abstract class)和接口(interface)
一. 抽象类abstract class 1 .抽象类是指在 class 前加了 abstract 关键字且存在抽象方法(在类方法 function 关键字前加了 abstract 关键字)的类. 2 ...
- interface IEngineControl封装引擎通用操作
using System; using System.Collections.Generic; using System.Text; using System.Linq; namespace SIAT ...
最新文章
- Python之Python 安装环境搭建
- 几个不错的java类、jar包及其依赖查找网站。。。
- Pyqt5_QWidget
- JavaScript: 对象
- 实施Exchange 2013中的 MailTip
- 《阿里巴巴Android开发手册》正式发布,献给移动开发者的新年礼物
- php网页执行流程,PHP程序的执行流程
- 2013年蓝桥杯软件大赛预赛java本科b组答案_2013年蓝桥杯软件大赛预赛C本科B组试题...
- 【考研数学】视频,你喜欢看哪位老师?
- 关于java前端的相关讲解
- 开发Windows物流管理系统——(一)前期准备
- QQ邮箱代收Gmail邮件,微信第一时间通知Gmail新收邮件
- pattern.compile java_Java Pattern compile(String)用法及代码示例
- 测试管理005:面对用户反馈的缺陷,测试人员能做些什么?
- 前沿重器[13] | 知乎query改写思路启示
- iOS 苹果内购 In-App Purchase 踩过的坑
- 栈、队列、数组的区别
- Echarts实战案例代码(9):图表纹理填充的解决方案(柱图为例)
- redis数据备份与恢复
- Tyvj 1047 乘积最大
热门文章
- c++小游戏合集(单人)
- java实现二叉堆,数据结构基础篇-二叉堆
- frps 多个_frp服务器server端是否支持多个frpc客户端?
- 基于DirectShow和FFmpeg的USB摄像头监控软件
- MySql数据库系统字符集
- eclipse注释模板修改时间为24小时制
- FT232USB串口通信线序
- 菜鸟教程 - Python 100例
- vue3 使用Element Plus <script lang=“ts“ setup>加上lang=“ts“后编译错误
- 蛋白质定位信号预测软件