简介: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的移动和缩放
// 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