iOS开发UI篇 -- 0323初识iOS
2015-05-29 17:24
363 查看
简介:iOS的一些基础只是,包括xcode、模拟器,最后一个UIButton和frame属性结合的一个demo
1.Retain:视网膜屏幕(高清屏幕),从iOS4开始
2、新建项目:
Product Name :产品名称
Organnization Name:组织名称
Company Identifier:公司的唯一标识,一般是公司域名倒过来写
Bundle Identifier: app的唯一标识,使用Company Identifier + Product Name 来当做app唯一标识
Class Prefix:类前缀,可以写自己开发的(宝杰BJ),也可以是项目名称(微博WB)
Device:选择iPhone
3、xcode文件介绍:初学者一般新建Single View Project
4、UIViewController:控制器,来控制UIView的
其实,每当显示一个新界面的时候,首先会创建一个新的UIViewController对象,然后创建一个对应的全屏UIView,
UIViewController负责管理这个UIView
UIViewController就是UIView得大管家,负责创建,显示,销毁UIView,
负责监听UIView内部的事件,负责处理UIView与用户交互。
每一个UIViewController对应一个UIView,每一个UIVc对象内部都有一个UIView属性,就是他负责管理的UIView对象
5、快捷键:
模拟器快捷键:
退回手机主界面:Commad + Shitf + H
6、监听按钮点击
因为UIVc的作用就是监听UIView的内部事件,当点击事件发生的时候,会调用一个Btn方法来通知UIVc按钮被点了,
UIVc就可以在这个Btn方法中做相应的事情
7、如果项目中有多个storyBoard,如何确定哪个是主界面?
点击项目--targets-- Deployments--Main Interface 就行设置
8、模拟器的使用
设置大小: 模拟器--Window--缩放比例 进行设置
设置位置:模拟器--调试--位置--自定义位置
设置型号:模拟器--硬件--设备
设备旋转:模拟器--硬件--xx旋转
回到首页:模拟器--硬件--首页(command shift h)
卸载app: 长按住app,抖动;取消:返回首页即可
退出app: 回到首页app并没有退出,连续两次(command shift h)来关闭程序
模拟器处于运行状态的话对app进行改变、设置 会报错!
9、退出第一响应者
// 单个退出
[self.num1 resignFirstResponder];
// 全部退出
[self.view endEditing:YES]
10、连线问题(线还连着,但是定义的属性已经注释了)
setValue:forUndefiendKey:]this class is not key value.....
11、属性和方法不必暴漏,建议放在.m文件的Interface中
12、位置尺寸
CGRect frame:以父控件的左上角为坐标原点,表示控件的位置尺寸(万能的)
CGRect bounds:以控件本身的左上角为坐标原点,表示控件的尺寸(xy都为0)
CGPoint center:以父控件的左上角为坐标原点,控件的中点位置
13、UIButton
能显示文字,能显示图片(背景图片和前置图片),还能调整内部图片和文字的位置
14、关于结构体:
不允许直接修改对象的结构体属性 的成员,可以间接修改。
eg : self.btn.frame.origin.y = self.btn.frame.origin.y - 10;(error)
对象:self.btn
对象的结构体属性:self.btn.origin
对象的结构体属性成员:self.btn.origin.y
// 设置临时结构体
CGRect tmpFrame = self.btn.frame;
// 修改
tmpFrame.origin.y -= 10;
// 将修改好的赋值给原来的结构体
self.btn.frame = tmpFrame;
使用frame和bounds改变尺寸(放大缩小,修改CGSize)区别在于,bounds中心点位置不变,frame左上角坐标不变(xy没改变)
15、storyboard和xib
共同点:
都用来描述软件界面
都用Interface Builder工具来编辑
不同点
Xib是轻量级的,用来描述局部的UI界面,在iOS5之前使用
Storyboard是重量级的,用来描述整个软件的多个界面,并且能展示多个界面之间的跳转关系,在iOS5之后出现
16、使用frame属性实现对UIButton的移动和缩放
1.Retain:视网膜屏幕(高清屏幕),从iOS4开始
2、新建项目:
Product Name :产品名称
Organnization Name:组织名称
Company Identifier:公司的唯一标识,一般是公司域名倒过来写
Bundle Identifier: app的唯一标识,使用Company Identifier + Product Name 来当做app唯一标识
Class Prefix:类前缀,可以写自己开发的(宝杰BJ),也可以是项目名称(微博WB)
Device:选择iPhone
3、xcode文件介绍:初学者一般新建Single View Project
4、UIViewController:控制器,来控制UIView的
其实,每当显示一个新界面的时候,首先会创建一个新的UIViewController对象,然后创建一个对应的全屏UIView,
UIViewController负责管理这个UIView
UIViewController就是UIView得大管家,负责创建,显示,销毁UIView,
负责监听UIView内部的事件,负责处理UIView与用户交互。
每一个UIViewController对应一个UIView,每一个UIVc对象内部都有一个UIView属性,就是他负责管理的UIView对象
5、快捷键:
模拟器快捷键:
退回手机主界面:Commad + Shitf + H
6、监听按钮点击
因为UIVc的作用就是监听UIView的内部事件,当点击事件发生的时候,会调用一个Btn方法来通知UIVc按钮被点了,
UIVc就可以在这个Btn方法中做相应的事情
7、如果项目中有多个storyBoard,如何确定哪个是主界面?
点击项目--targets-- Deployments--Main Interface 就行设置
8、模拟器的使用
设置大小: 模拟器--Window--缩放比例 进行设置
设置位置:模拟器--调试--位置--自定义位置
设置型号:模拟器--硬件--设备
设备旋转:模拟器--硬件--xx旋转
回到首页:模拟器--硬件--首页(command shift h)
卸载app: 长按住app,抖动;取消:返回首页即可
退出app: 回到首页app并没有退出,连续两次(command shift h)来关闭程序
模拟器处于运行状态的话对app进行改变、设置 会报错!
9、退出第一响应者
// 单个退出
[self.num1 resignFirstResponder];
// 全部退出
[self.view endEditing:YES]
10、连线问题(线还连着,但是定义的属性已经注释了)
setValue:forUndefiendKey:]this class is not key value.....
11、属性和方法不必暴漏,建议放在.m文件的Interface中
12、位置尺寸
CGRect frame:以父控件的左上角为坐标原点,表示控件的位置尺寸(万能的)
CGRect bounds:以控件本身的左上角为坐标原点,表示控件的尺寸(xy都为0)
CGPoint center:以父控件的左上角为坐标原点,控件的中点位置
13、UIButton
能显示文字,能显示图片(背景图片和前置图片),还能调整内部图片和文字的位置
14、关于结构体:
不允许直接修改对象的结构体属性 的成员,可以间接修改。
eg : self.btn.frame.origin.y = self.btn.frame.origin.y - 10;(error)
对象:self.btn
对象的结构体属性:self.btn.origin
对象的结构体属性成员:self.btn.origin.y
// 设置临时结构体
CGRect tmpFrame = self.btn.frame;
// 修改
tmpFrame.origin.y -= 10;
// 将修改好的赋值给原来的结构体
self.btn.frame = tmpFrame;
使用frame和bounds改变尺寸(放大缩小,修改CGSize)区别在于,bounds中心点位置不变,frame左上角坐标不变(xy没改变)
15、storyboard和xib
共同点:
都用来描述软件界面
都用Interface Builder工具来编辑
不同点
Xib是轻量级的,用来描述局部的UI界面,在iOS5之前使用
Storyboard是重量级的,用来描述整个软件的多个界面,并且能展示多个界面之间的跳转关系,在iOS5之后出现
16、使用frame属性实现对UIButton的移动和缩放
// ViewController.m // 0323-常见结构体应用 // // Created by hubaojie on 15-5-28. // Copyright (c) 2015年 hubaojie. All rights reserved. // #import "ViewController.h" #define btnX 100 #define btnY 100 #define btnW 55 #define btnH 40 #define AddBtnY 50 #define moveSize 30; @interface ViewController () @property(nonatomic,weak)UIButton *upBtn; @property(nonatomic,weak)UIButton *downBtn; @property(nonatomic,weak)UIButton *leftBtn; @property(nonatomic,weak)UIButton *rigthBtn; @property(nonatomic,weak)UIButton *bigBtn; @property(nonatomic,weak)UIButton *smallBtn; @property(nonatomic,weak)UIButton *headBtn; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. for (int index = 0; index < 7; index ++) { UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom]; btn.backgroundColor = [UIColor grayColor]; [btn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; [self.view addSubview:btn]; [btn addTarget:self action:@selector(moveOrChange:) forControlEvents:UIControlEventTouchUpInside]; btn.tag = 10 + index; switch (btn.tag) { case 10: btn.frame = CGRectMake(btnX, btnY, btnW, btnH); [btn setTitle:@"up" forState:UIControlStateNormal]; self.upBtn = btn; break; case 11: btn.frame = CGRectMake(btnX, btnY+AddBtnY, btnW, btnH); [btn setTitle:@"down" forState:UIControlStateNormal]; self.downBtn = btn; break; case 12: btn.frame = CGRectMake(btnX, btnY+AddBtnY*2, btnW, btnH); [btn setTitle:@"left" forState:UIControlStateNormal]; self.leftBtn = btn; break; case 13: btn.frame = CGRectMake(btnX, btnY+AddBtnY*3, btnW, btnH); [btn setTitle:@"right" forState:UIControlStateNormal]; self.rigthBtn = btn; break; case 14: btn.frame = CGRectMake(btnX, btnY+AddBtnY*4, btnW, btnH); [btn setTitle:@"big" forState:UIControlStateNormal]; self.bigBtn = btn; break; case 15: btn.frame = CGRectMake(btnX, btnY+AddBtnY*5, btnW, btnH); [btn setTitle:@"small" forState:UIControlStateNormal]; self.smallBtn = btn; break; case 16: btn.frame = CGRectMake(220, 240, 50, 50); [btn setTitle:@"head" forState:UIControlStateNormal]; // [btn setTitleColor:[UIColor greenColor] forState:UIControlStateNormal]; self.headBtn = btn; break; default: break; } } } - (void)moveOrChange:(UIButton *)btn{ // 我们不可以直接修改 对象的结构体的属性的成员变量,但是我们可以间接修改 // 对操作添加动画效果,最后别忘记提交动画 [UIView beginAnimations:nil context:nil ]; [UIView setAnimationDuration:2]; // 1. 建立临时结构体 CGRect tmpFrame = self.headBtn.frame; switch (btn.tag) { case 10: // 2. 间接对结构体属性成员变量进行操作 tmpFrame.origin.y -= moveSize; break; case 11: tmpFrame.origin.y += moveSize; break; case 12: tmpFrame.origin.x -= moveSize; break; case 13: tmpFrame.origin.x += moveSize; break; case 14: tmpFrame.size.width += moveSize; tmpFrame.size.height += moveSize; break; case 15: tmpFrame.size.width -= moveSize; tmpFrame.size.height -= moveSize; break; default: break; } // 3. 将修改后的结构体赋值给原结构体 self.headBtn.frame = tmpFrame; [UIView commitAnimations]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } @end
相关文章推荐
- [API GUIDE 学习笔记]android MediaPlayer 播放视频
- Solr查询query效果对比
- 给内核打patch的利器 quilt
- UESTC488 组合计数
- 关于proplists:get_value/2 与lists:keyfind/3 的效率比较
- UED大全
- Starting MySQL.. ERROR! The server quit without updating PID file (/data/mysql/l
- error in java UI integration
- UINavigationController 详解
- stringbuffer与stringbuilder的区别
- EqualsBuilder和HashCodeBuilder
- EqualsBuilder和HashCodeBuilder
- EqualsBuilder和HashCodeBuilder
- EqualsBuilder和HashCodeBuilder
- EqualsBuilder和HashCodeBuilder
- load & require
- equinox提供了啥服务
- (转)RMAN-06054: media recovery requesting unknown archived log for thread...
- UI常用方法总结之 UINavigationController
- XHNewsFrameworkExample