UI课堂笔记
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, 列表
UI课堂笔记的更多相关文章
- Java基础进阶:多态与接口重点摘要,类和接口,接口特点,接口详解,多态详解,多态中的成员访问特点,多态的好处和弊端,多态的转型,多态存在的问题,附重难点,代码实现源码,课堂笔记,课后扩展及答案
多态与接口重点摘要 接口特点: 接口用interface修饰 interface 接口名{} 类实现接口用implements表示 class 类名 implements接口名{} 接口不能实例化,可 ...
- Android 高级UI设计笔记07:RecyclerView 的详解
1. 使用RecyclerView 在 Android 应用程序中列表是一个非常重要的控件,适用场合非常多,如新闻列表.应用列表.消息列表等等,但是从Android 一出生到现在并没有非常 ...
- 九章算法系列(#3 Binary Tree & Divide Conquer)-课堂笔记
前言 第一天的算法都还没有缓过来,直接就进入了第二天的算法学习.前一天一直在整理Binary Search的笔记,也没有提前预习一下,好在Binary Tree算是自己最熟的地方了吧(LeetCode ...
- 九章算法系列(#5 Linked List)-课堂笔记
前言 又是很长时间才回来发一篇博客,前一个月确实因为杂七杂八的事情影响了很多,现在还是到了大火燃眉毛的时候了,也应该开始继续整理一下算法的思路了.Linked List大家应该是特别熟悉不过的了,因为 ...
- 九章算法系列(#4 Dynamic Programming)-课堂笔记
前言 时隔这么久才发了这篇早在三周前就应该发出来的课堂笔记,由于懒癌犯了,加上各种原因,实在是应该反思.好多课堂上老师说的重要的东西可能细节上有一些急记不住了,但是幸好做了一些笔记,还能够让自己回想起 ...
- 九章算法系列(#2 Binary Search)-课堂笔记
前言 先说一些题外的东西吧.受到春跃大神的影响和启发,推荐了这个算法公开课给我,晚上睡觉前点开一看发现课还有两天要开始,本着要好好系统地学习一下算法,于是就爬起来拉上两个小伙伴组团报名了.今天听了第一 ...
- ocp11g培训内部教材_052课堂笔记(042)_体系架构
OCP 052 课堂笔记 目录 第一部分: Oracle体系架构... 4 第一章:实例与数据库... 4 1.Oracle 网络架构及应用环境... 4 2.Oracle 体系结构... 4 3. ...
- ocp11g培训内部教材_051课堂笔记(047)_SQL
OCP 051课堂笔记 目录 OCP 051课堂笔记... 1 第一章.Oracle命令类别:... 4 第二章.SQL的基本函数... 4 2.1 单行函数与多行函数... 4 2.2 单行函数的几 ...
- 线程(java课堂笔记)
1.两种方式的差异 2.线程的生命周期 3.线程控制(线程的方法) 4.线程同步 5.线程同步锁 一. 两种方式的差异 A extends Thread :简单 不能再继承其他类了(Java单继承)同 ...
随机推荐
- 天翼宽带政企网关B2-1P 如何获得超级管理员账号?
RT 用useradmin没办法做NAT,想进telecomadmin里面看看,,,,,并且已经使用过nE7jA%5m这个密码登录,没有用! 求办法!!! 最佳答案 查找超级管理员密码方法: 1.用光 ...
- Java Io(数据输入输出流)
Java Io 字节流中的DataInputStream 和 DataOutputStream,使用流更加方便,是流的一个扩展,更方便读取int, long,字符等类型数据. 事例代码如下: pack ...
- Effective Java 读书笔记之七 通用程序设计
一.将局部变量的作用域最小化 1.在第一次使用变量的地方声明 2.几乎每个变量的声明都应该包含一个初始化表达式:try-catch语句是一个例外 3.使方法小而集中是一个好的策略 二.for-each ...
- [codevs1022]覆盖
[codevs1022]覆盖 试题描述 有一个N×M的单位方格中,其中有些方格是水塘,其他方格是陆地.如果要用1×2的矩阵区覆盖(覆盖过程不容许有任何部分重叠)这个陆地,那么最多可以覆盖多少陆地面积. ...
- [转载]JavaEE学习篇之——JQuery技术详解
原文链接:http://blog.csdn.net/jiangwei0910410003/article/details/32102187 1.简介2.工具3.jQuery对象 1.DOM对象转化成j ...
- 跟着百度学PHP[4]OOP面对对象编程-6-构造方法(__construct)和构析方法(__destruct)
函数就是成员方法(方法有三:构造方法.成员方法.析构方法) 下面是两种方法. 构造方法和构析方法 00x1 构造方法 构造方法会在创建对象之后自动调用.其名称为__construct <?php ...
- 分享一个快速设置背景的js 自动获取背景图的长宽
我来分享一个快速设置背景的js (需要jq支持!) 快速切图铺页面用---就是不需要手动输入背景图的长宽 自动获取背景图的长宽 : <div class="wrap"> ...
- tornado 排程
https://groups.google.com/forum/#!topic/python-tornado/KEmAg97zUg8 鉴于不是所有人都能跨越GFW,摘抄如下: Scheduled jo ...
- 实现Redis的主从复制配置
实现Redis的主从复制配置比较简单,而且容易明白. 下图是要配置的主从复制结构图: 1.说明 Redis主从复制中一个主服务可以有多个从服务,一个从服务可以有多个从服务. 配置比较简单,只需要更改r ...
- POJ 3903
http://poj.org/problem?id=3903 这个题目是一个求最长递增子序列,这个只是求长度而已,所以可以用LIS 所谓的LIS也就是用二分优化来减少时间而已,而且其只能求出最长的序列 ...