-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathIOS基本控件.txt
191 lines (121 loc) · 7.38 KB
/
IOS基本控件.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
常用控件:
UIVIew 可以使用alloc 方法创建并初始化
UIButton 只能使用类方法创建
UIWindow 特殊的UIView //处理视图等动作需要使用self.window
UIScreen 屏幕硬件表示类 //存储各种窗口数据,但是不参与操作,基本只使用一次,用来获取各种信息【UiScreen mainScreen】.bounds(窗口信息(bounds,矩形框,当前屏幕大小))
mainScreen 获得主屏幕设备信息
bounds 屏幕的宽高
每个UIView 都有一个view.window 属性,表示当前view附属的window,(其实一个程序中只有一个window 即UIWindow)
整个UIKit框架中只有一个“根”视图控制器,属于window的属性,用来管理界面和处理界面逻辑的类对象,视图控制器可以有很多个,可以切换
现在,程序启动前,必须对根视图控制器进行赋值
所有的视图控制器都要自定义完成,并继承于ViewController
当view被添加到window中时会对此字段赋值,子view添加到父view中时会对子视图中window赋值
子视图永远基于父视图,跟Android 一致
supporting File 下的main.m 就是应用的入口函数,ios框架去维护
<argc 启动时带有参数的个数
argv 参数列表
主框架类名,当参数为nil,系统使用默认的框架类作为主框架 Info.plist 中的NSPrincipalClass 字段指定,如果还没有(XCode6以后就没有了),使用UIApplication类,
代理类
主框架代理对象名字 默认AppDelegate>
ViewController:
viewDidLoad 视图第一次加载时被调用(只会被调用一次),多用于布局的初始化和资源的初始化
didReceiveMemoryWarning 系统内存过低时,发出警告并调用此函数
viewWillAppear 视图显示前(未显示) (其他状态:正在显示,即将消失,已经被隐藏)
viewDidAppear
viewWillDissppear
viewDidDissppear
viewWillLayoutStubviews//这两个应该不常用
viewDidLayoutStubviews
touchesBegan:((NSset<UITouch *>)*)touches withEvent:(UIEvent *) event{} 点击屏幕
UISwitch :
可以使用alloc&init方法创建并初始化
位置可以改变,但是大小无法控制(可以设置,但不生效)
UISwitcher:
settON 开启状态颜色
setOnTintColor 开启时圆钮后面的颜色
setThumbTintColor 圆钮的颜色
setTintColor 关闭时边缘的颜色
平时看到的白色是下层控件的颜色
[_mySwitch addTarget:self action:@selector(swChange:) forControlEvents:UIControlEventValueChanged];
_mySwitch.on==YES 开关当前的状态
_mySwitch.on=Yes 设置开关状态
[_mySwitch setON:YES] 设置开关状态
进度条:
高度不可变(宽可变)
progress:(0-1之间的小数 )
profressHintColor:进度的颜色
trackThintColor:背景条颜色
progressViewStyle:样式
无法添加事件
滑动条:
maximumValue:
minimumValue:
可为负值,定义为float类型
minimuntrackTintColor:左侧滑条背景颜色
maximuntrackTintColor:右侧滑条背景颜色
thumbTintColor:滑块颜色
可以使用addTag方法添加事件
步进器:
宽高不能变
maximumValue:
minimumValue:
value:当前值
stepValue:步进的步伐值
autorepeat:是否可以重复响应事件操作(响应按住)(响应时速度渐快)
continuous:是否将步进结果通过事件函数响应出来(只有当continuous为YES时才有效果(当设置为NO,按住时,步进在进行,但是不回掉事件方法,当松开时才回掉)
分栏控件:
宽度可变,高度不可变
[XXX insertSegmentWithTitle:@"a" atIndex:0 animated:No] 给分栏控制器添加一个元素(类似radioButton)
selectedSegmentIndex:当前选中的值
各子元素平分总宽度
弹框:
等待指示器:宽高不可变
滚动视图:
UINavigationController:(导航控制器)
以层级的方式管理多个视图控制器的切换,创建时,一定要有一个根视图控制器(其本身没有)
使用【self.navaitationContraller pushViewController:vc animation:YES】 跳转下一级页面,新的导航控制器会入栈
self.navigationController 永远指向栈顶的导航控制器
当导航控制器不被添加左侧按钮,默认为返回按钮,添加后,会覆盖左侧按钮(这里应该是用钩子实现的)
使用【self.navigationController popViewControllerAnimated:YES】 返回上级菜单
使用【self.navigationController popToRootViewControllerAnimation:YES】返回到栈底页面
//将导航控制器设置为不透明
self.navigationController.navigationBar.barStyle=UIBarStyleBlackOpaque;
self.navigationController.navigationBar.translucent=NO;//两个应该一起用,但是这个更重要
//将导航控制器其他颜色
self.navigationController.navigationBar.barTintColor=[UIColor redColor];//设置这个属性后,上面的两行就不起作用了
//设置导航元素项目按钮的风格颜色
self.navigationController.navigationBar.tintColor=[UIColor redColor];
//隐藏导航
self.navigationController.navigationBarHidden=YES;
self.navigationController.navigationBar.hidden=YES;
公用的属于导航控制器,局部的,属于等位,工具栏也属于导航控制器,只要工具栏没被隐藏就一直在,导航元素响,是
分栏控制器:
管理多个视图控制器的管理控制器,通过数组方式管理多个平行关系的视图控制器,与导航控制器的的区别在与,导航控制器管理的是带有层级关系的控制器
分栏控制器在同一个界面最多显示5个控制器切换按钮,多出来的就会自动创建一个新的导航控制器来管理其余的控制器。
//固定宽带占位按钮:
UIBarButtonItem* btn1=[[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIbarButtonSystemItemFixSpace target:nil action:nil];
btn1.with=30;
//自动计算宽度按钮
UIBarButtonItem* btn2=[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtionSystemItemFlexbleSpace target:nil action:nil];
UITableView
//单元格显示效果协议
-(UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath{
return UITableViewCellEditingStyleInsert|UITableViewCellEditingStyleDelete;//组合状态,效果为多选,API中无体现
// return UITableViewCellEditingStyleInsert;//添加
// return UITableViewCellEditingStyleDelete;//默认也是这个效果
}
切换视图:
在ViewController中调用
ViewC02* vc2=[[ViewC02 alloc] init];
[self presentViewController:vc2 animated:YES completion:nil]
//cv2:新的控制器对象
//animated:是否使用切换动画
//completion:切换结束后功能调用,不需要传nil即可(bolck语法)
消失当前视图控制器
[self dismissViewControllerAnimated:YES completion:nil]
//dismissViewControllerAnimated 是否使用切换动画
//completion:切换结束后功能调用,不需要传nil即可(bolck语法)
页面切换
present 和dismiss配对使用
push和pop配对使用
层级关系:view->ViewController->UIWindow->UIApplication->AppDelegate