2016.7.18
+ (UIColor *)blackColor;
+ (UIColor *)darkGrayColor; 深灰色
+ (UIColor *)lightGrayColor; 浅灰色
+ (UIColor *)whiteColor;
+ (UIColor *)grayColor; 灰色
+ (UIColor *)redColor;
+ (UIColor *)greenColor;
+ (UIColor *)blueColor;
+ (UIColor *)cyanColor; 青色
+ (UIColor *)yellowColor;
+ (UIColor *)magentaColor; 品红色
+ (UIColor *)orangeColor;
+ (UIColor *)purpleColor; 紫色
+ (UIColor *)brownColor;
+ (UIColor *)clearColor;
1 . iOS系统版本,每年都有更新 ,对我们开发者而言,主要的是观察API的变化。
2 . iPhone新手机发布,会产生不同尺寸的屏幕,现在市场上有4种尺寸。我们需要考虑屏幕适配问题。
3 . iOS系统层级,分为4层,目前我们学习的就是顶层Cocoa touch 层 (layer),我们使用的是UIKit框架
4 . IOS SDK(软件开发工具包)IOS开发语言 OC switch 都是面向对象的.
5 .网址:github stackoverflow cocoachina code4app
6 .我们 最简单的创建ui项目的方法 就是通过storyboard(故事版)来完成
7.我们可以通过设置故事版上的故事属性 (右边栏,第四个按钮——属性设置)
8.模拟器 输入模式切换command+shift+k
9.模拟器大小的切换 command+1,2,3
10.模拟器command+l 迷你器锁屏
11.模拟器home command+shift+h
2016.7.19
1.[self.view endEditing:YES]结束编辑 回收键盘
YES就会表示结束 NO则相反
状态栏所在的像素为20个单位
(4.7英寸 375*667 5.5 英寸 414*736)
iOS坐标设置 创建一个Label 放在屏幕上
设置Label的位置信息
设置Label的背景颜色
Label .backgroundColor = [UIColor redColor];
[self.view addSubview :label];
程序的生命周期 main 函数 程序的入口
不会退出 (保持了程序的运行)
int main (int argc ,char *argv[])
@param argc 传入参数的个数
@param argv[] 程序缓存的地址
UIApplicationmain()函数的作用
1.创建一个应用程序对象 (UIApplication *)用来控制和协调app和iOS
2.创建了一个事件循环(NSRunLoop)(可以简单的理解 程序创建一个死循环,保证应用程序不退出 实际上是创建一个 main run loop),来处理用户事件
3.建立一个应用程序的代码对象 并且设置好代理
参数的说明:
前两个参数main函数提供
@param principalclassname 如果置为nil 程序会为我们指定默认的UIApplication类 然后将当前的程序和他的实例绑定
@param delegateClassName 代理对象的类名
2016.7.20
如何结束编辑事件 两种方法:
1.对每一个输入框辞去第一响应者
2.结束当前界面上的编辑
启动图标设置。asset文件夹中的icon文件中。我们 使用prepo软件进行图标的制作 Spotlight 上架所需大图
启动图设置 在Xcode6上 创建的项目 有启动图 默认包含信息:项目名称 版权所有信息
在Xcode7上面 有启动图的文件 但没有包含任何的信息
设置启动图
1 .在storyboard文件上 直接添加控件
2.在项目设置中 设置启动图源 源文件夹中的图片会成为启动图 Launch image source 优先级低于Launch Screen File 所以我们要把后者内容直接删除
桌面名称Bundle display name 设置手机的桌面展示的名字(设置不影响项目上线的bundle ID)(在info.plist文件中改)
设置deployment target(部署目标) 例如设置9.3 以为这9.3之前的用不了 改变部署目标可以运行项目在不同的系统版本上
应用程序的生命周期:
1> 有用户点击ios设备桌面图标 开始启动应用程序(如果已经启动过 那么程序只是挂在后台 情况不同) 从代码上来说 UIApplicationMain()函数开始做事
2》程序启动完成 告诉APPDelegate 对象程序已经完成启动(做合适的事情)
3》程序一直活跃
4》由于锁屏 home 的存在 应用程序可以随意跳转 进入不同的状态 同样还是理由代理模式 完成通信 告诉APPDelegate来做合适的事情
应用程序的几种状态
1》锁屏:变为非活跃状态 ——》进入后台
解锁:回到前台 ——》转为活跃状态
2》按home键:同锁屏
3》双击home键 活跃——》非活跃
4》程序结束:用户结束 程序自己崩溃(长时间收到内存泄漏)
第二课(CG: Core Graphics 用来绘制)
UIkit 和 UIwindow
一.窗口与视图的关系 UIwindow继承于UIView 窗口可以容纳视图内容
二.窗口的作用
1》容器
2》处理事件和分发事件
3》 和视图控制器协作管理App 旋转可以由窗口控制
三.视图的作用
1》一块矩形的区域用来填充内容 具体的内容可以使用精确的子类来显示
2》布局和管理子类视图
3》处理事件(以为UIview 继承于UIResponder)
四.视图的显示
1》平面的几何决定 frame bounds center
2》frame范围 有origin(CGpoint)起点 size (CGsize)尺寸
3》bounds 有origin(0.0),有size尺寸
4》center 中心点
窗口的基本创建
1. 创建window 设置window的大小为屏幕大小
self.myWindow1 = [[UIWindow alloc] initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, 20)];
2.设置window的背景颜色
self.myWindow1.backgroundColor = [UIColor blackColor];
3.设置成app的主窗口并且可见
[self.myWindow1 makeKeyAndVisible];
4.设置window的根控制器
self.myWindow1.rootViewController = [[ViewController alloc] init];
self.myWindow1.windowLevel = UIWindowLevelStatusBar;
5.当前应用程序中的所有窗口
NSLog(@"%@", [UIApplication sharedApplication].windows);
视图的基本概念2
1.添加视图
UIView * aView = [[UIView alloc] initWithFrame:CGRectMake(20, 150, 300, 300)];
2.添加颜色
aView.backgroundColor = [UIColor blueColor];
3.添加子视图(一个视图需要有父视图进行管理 父视图持有子视图)
[self.window addSubview:aView];
4.将视图放在aView的里面
将子视图放到父视图上的时候 坐标系以父视图左上角为原点
默认 子视图是可以超出父视图的范围内
2016.7.22
使用xib加载图片
获取屏幕大小 创建window 设置window的大小为屏幕大小 设置window的背景颜色 设置成app的主窗口并且可见 设置window的根控制器
1.将视图添加到窗口上 获取程序的包 (和项目源代码文件夹不同)
2.获取包目录 bundle bundle path ;
3.加载包里面的 nib文件,但会值是数组,里面存很多个view 加载包中的Nib文件
@param NSString Nib文件的名称
@param id 加载出来的文件所有者
@param NSDictionary 加载的时候所需要的附加信息
4.获取数组中的视图 【viewArray firstObject】;
5.添加上去作为子类
视图树
addSubview: // 添加子视图
insertSubview:atIndex: // 视图插入到指定索引位置
insertSubview:aboveSubview: // 视图插入指定视图之上
insertSubview:belowSubview: // 视图插入指定视图之下
bringSubviewToFront: // 把视图移动到最顶层
sendSubviewToBack: // 把视图移动到最底层
exchangeSubviewAtIndex:withSubviewAtIndex //把两个索引对应的视图调换位置
removeFromSuperview // 把视图从父视图中移除
1.创建一个大的视图 视图的层次结构 :一个视图可以拥有多个子视图 但一个视图只有一个父视图
2.创建子视图 添加子视图 建立层级关系 :父子关系 :addSubview
3.子视图会覆盖父视图 同层级的子视图 如果发生堆叠 那么根据先后顺序摆放(先添加的在下 后添加的在上)
4.添加一个子视图 放入指定的索引位置
[baseView insertSubview:insertSubview1 atIndex:2];
5.指定在某某视图之上 above : 在。。。之上
6.如果使用insertSubview:aboveSubview :父视图和基于的子视图为相同 那么相当于直接添加
[baseView addSubview:insertSubview1];
指定在XX视图之下
[baseView insertSubview:insertSubview1 belowSubview:subView2];
延迟调用方法
/**
* 延迟调用一个方法
*
* @param SEL 方法签名
* @param id 附带的参数
* @param delay 延迟的时间间隔
*/
// 调整已有视图层次结构
// Exchang : 交换
// [baseView exchangeSubviewAtIndex: withSubviewAtIndex:<#(NSInteger)#>]
// 拿到最前面
// [baseView bringSubviewToFront:<#(nonnull UIView *)#>]
// 送到最后面
// [baseView sendSubviewToBack:<#(nonnull UIView *)#>]
//---------------------------------------------
// 获取一个视图的子视图数组
// baseView.subviews
2016.7.25
首尾式动画
开启动画 [UIView beginAnimations:nil context :nil];
动画执行时常
[UIView setAnimationDuration:0.1];
1. 获取视图坐标
CGRect viewFrame = self.motionView.frame;
2.改变获得的Frame结构体
viewFrame.origin.y = viewFrame.origin.y + 10 * _direction;
3.CGRect结构体赋给图片
self.motionView.frame = viewFrame;
动画的结束
[UIView commitAnimations];
文本标签
UILabel *textlabel = [[UILabel alloc]init]; 创建一个对象
textlabel.frame = CGRectmake(10,100,300,100);
textLabel.text =@“要输出的字”;
行数设置 如果设置大于0的值 那么带包最多可显示行 0 表示没有行数限制 只要范围足够 自动换行
textLabel 。numberOfLines = 0;
设置文本的字体 美工给的字号如果你觉得太大 可以认为他给的是px单位 我们直接把字号除以2
常规 : textLabel.font = [UIFont systemFontOfSize:12];
加粗 : textLabel.font = [UIFont boldSystemFontOfSize:28];
根据Label宽度调整字体 : textLabel.adjustsFontSizeToFitWidth = YES;
会根据字体去适配合适的Label尺寸
#warning 要先设置内容,其次设置行数没有限制。字体也要先设置好
[textLabel sizeToFit];
设置对齐方式
NSTextAlignmrntLeft 左对齐
NSTextAlignmentCenter 居中
NSTextAlignmentRight 右对齐
Label宽度不够时 对文本进行被打断的方式
textLabel。lineBreakmode = NSLineBreakTruncatingHead
设置文本的阴影
textLabel.shadowColor = [uiColor grayColor];
textlabel.shadowoffset = CGSizeMake(5,5);
设置文本颜色
textLabel。textColor = [UiColor orangeColor];
textlabel.tag = 10;
当文本变为高亮状态以后 显示颜色 高亮状态 (设置了并没有立即变换状态)
textLabel。higtlightedTextColor = [UIColor greenColor];
[self performSelection:@selection(timerAction:)withOnject:textLabel afterDelay;5];
[self.view aaddSubview :textLabel];
-(void)timerAction;(NSTimer *)timer
{
label.highlighted = ! label.highlighted;
}
2016.7.2
UIbuntton 创建按钮
手动创建按钮
UIButtton *button = [UIbutton buttonWithtype :UIButtonTypesystem];
使用alloc方法创建的按钮默认状态为 custom
UIButton *btn = [ [UIbutton alloc]init];
btw.frame = CGRectMake (200,200,200,200);
btw.BackColor = [UIColor redcolor];
绑定目标动作
[btn addTarget :self action :@selector(test:) forControlEvents:UIControlEventouchupInside];
设置按钮的标题
[btn setTitle:@“普通状态” for state:UIControlstatenormal];
[btn setTitle :@“高亮状态” for State :UIControlStateHightlighted];
[btn setTitle:@“选中状态” for State : UIControlStateSelected];
当enable == NO的时候 按钮成为disabled状态
[btn setTitle ;@“禁用状态” forState :UIControlstateDisabled];
设置图片按钮
setImage:forState : 使用的是图片的原始大小 让按钮显示的更加精致 如果frame够大 点击也方便
setbackgroundImage :forState : 把图片设置为按钮幕后的背景 会拉伸图片
UIImage * image = [UIImage imageNamed:@"playing_btn_love@2x"];
[btn setImage:image forState:UIControlStateNormal];
// [btn setBackgroundImage:[UIImage imageNamed:@"playing_btn_in_myfavor_h@2x"] forState:UIControlStateNormal];
[btn setImage:[UIImage imageNamed:@"playing_btn_in_myfavor_h@2x"] forState:UIControlStateHighlighted];
[btn setImage:[UIImage imageNamed:@"playing_btn_in_myfavor@2x"] forState:UIControlStateSelected];
设置标题的颜色 自定义设置下 默认颜色为白色 系统状态下 默认颜色为蓝色
[btn setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
选中状态改变 sender.selected = !sender.selected;
按钮是否可以继续使用 继承UIControl 的属性 可以改变界面效果
sender.enabled = !sender.enabled;
是否可以与用户交互 来自雨于 UIView 不影响外观
sender.userInteractionEnabled = NO
2016.8.1
每一个界面都应该由一个控制器来管理显示
视图控制器
视图控制器的创建
1 .他是窗口的根视图控制器
2 .他是一个无形的视图大管家 ,能看见的是视图控制器管理的根视图。
3 .视图控制器是MVC构架中的C部分
(1)初始化控制器 就是init方法 如果是后来创建的xib文件 initWithNibName
(2)loadView 在第一次访问view属性的时候 (一般不建议复写该方法 如果复习 一定要使用父类调用)
(3)如果加载了视图 一定会调用视图生命周期中的viewDidLoad
(4)根据视图渲染情况的不同 调用出现 消失方法
viewWIllAppear
viewDidAppear
viewWillDisappear
viewDidDisappear
View出生
1 .空(不存在)
sel .view ——》nil
2 .创建视图
load view方法 view ——》0x23
3 .添加子视图
[self .view addSubview:aVIew];
模态视图(modal)
1 .模态视图是一个临时视图 创建完成就生成 消失就从内存中清除
视图控制器的生命周期
1 . 加载视图完成 :- (void)viewDidLoad {[super viewDidLoad];
2 .视图将要显示 :- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
3 .视图已经显示 :- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
4 .视图将要消失 :- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
5 .视图已经消失 :- (void)viewDidDisappear:(BOOL)animated {
[super viewDidDisappear:animated];
2016.8.2
block既能对 对象使用 有能对基本数据类型使用
weak只能对 对象使用
2016.8.13
UITabBarSystemItemMore, 更多的
UITabBarSystemItemFavorites, 最喜欢的
UITabBarSystemItemFeatured, 特色
UITabBarSystemItemTopRated,
UITabBarSystemItemRecents, 最近
UITabBarSystemItemContacts, 联系人
UITabBarSystemItemHistory, 历史
UITabBarSystemItemBookmarks, 书本
UITabBarSystemItemSearch, 搜索
UITabBarSystemItemDownloads, 下载
UITabBarSystemItemMostRecent,
UITabBarSystemItemMostViewed, 列表