ios第一天

tittle button
backgroundRectForBounds
tittleRectForContentRect控制器内部label的frame
imageRectForContentRect// 控制器内部imageView的frame

CGFloat
CGFloat
CGRectMake

点击一个按钮,才报错,死循环!!
awakeFromNib
从文件中解析一个对象时会调用



软件开发定律:万物皆对象
UIKit:创建和管理应用程序用户界面
图片对象:UIImageView
文本标签对象:UILabel
按钮对象:UIButton

利用UIKit框架提供的类来创建各种可视化组建对象,最后组成复杂而美观的UI界面
提高学习效率:
    1.理解思路,寻找规律。
    2.下课敲代码不要看代码。
    3.学习是学问题,不是学答案,学会发现问题,解决问题

一个简单地加法计算器:
stroyboard文件:描述界面,左边的箭头所指的界面:程序—启动就会显示
option键,拖
改成数字键盘:attribute  keyboardtype
拖线实现按钮单击事件:
能点的都是按钮!
能输入文字的是文本框!

UIView所有控件的祖先(控件,组建) :作用 1.展示控件;2. 采集控件
UIButton, UILabel, UITextField
每一个UIView都是一个容器,能容纳其他UIView
UIViewController 作用:
首先创建一个UIViewController, 接着, 创建一个大的UIView
Controller与View的关系:view如何创建, 如何销毁, 子控件的一些触发事件, 这一切有controller来实现。一句话, controller用来管理view的,包括UIview的创建销毁,UIView与用户的交互


监听事件在控制器的类中写代码

类扩展
IBAction表示void,但表示能拖线(关联)了
连线,删线

获得文本框中的内容:
拖!!!
controller中的属性与界面上的控件相关连 outlet (生成属性) action生成方法

实现计算功能步骤
!. 获取用户的输入
计算和
把结果显示在界面上

字符串类型转成int
int n1 = [num1 intValue];
int n1  = num2.intValue;
int -> NSString:
[NSString stringWithFormat:@“@%d”, result];

收回键盘操作
firstResponsor第一响应者:键盘是谁叫出来的, 那个谁就叫做第一响应者
1.让第一响应者辞职,键盘就缩回去了.  用[num1resignFirstResponder]方法。
2.找到当前控制器控制的view, 让其内部所有的控件停止编辑工作。这样的话,凡是这个view的子控件叫出的键盘就都会去了。[self.view endEditing YES]

self表示当前的viewController, self.view表示当前控制器所管理的那个view

IBAction IBOutlet 相当于void,但能让我们拖线

子控件, 父控件   是容器与其内部控件的关系


Deployment Target:  当前开发的最低运行版本

Main Interface: 程序启动时启动哪个storyboard

Bundle Identifier: 版本

箭头: 程序启动时启动的控制器, (如果没看到箭头勾选is initial viewControllor)

程序启动->配置Main.storyboard->箭头所指向的controller-> 配置的类名-> 创建controller ->创建view
文本框: placeholder(用户输入文字是会自动消失) secure(密码文本框掩码显示)
文本框右边显示“清楚”按钮。Clear Button默认值:Never appears
文本框只能输入数字:keyboard属性

按钮:能显示文字,图片,还能随时调整内部图片和文字的位置
有UIKIt提供

功能分析:
左下角4个方向按钮,控制头像的位置
右下角分别是放大,缩小按钮,控制头像的尺寸
头像按钮既要有背景图片,又有文字

步骤分析:
搭建UI界面
监听按钮点击
修改头像按钮的属性来调整位置和尺寸

拖图片到images.xcassets
按钮的状态:高亮,默认状态
按钮默认类型是system, 其高亮状态是灰色。
    可以改成custom类型。


拖线:方法2:右击控件,选择事件,连线到代码的扩展中

获取button的坐标:获取原始按钮的frame值(是CGRect的类型,包扩两个值:point and size, 其中point包扩CGFloat x, CGFloat y, size 包括width, 与height);
CGRect orignFrame = self.btnIcon.frame; //获得图标的frame
originFrame.origin.y -= 10;// 设置y值
self.btnIcon.frame = originFrame;// 把新的frame在赋值给按钮

修改控件坐标步骤:
获取原始的frame值
修改frame
重新把新的frame值赋值给控件

当oc对象属性是一个结构体类型, 不能直接修改该属性的值,规定的

创建size: CGSizeMake()   创建Rect  CGRectMake

sender当前所被点的那个按钮当作参数

任何的控件都有一个tag属性来标记该控件,
使用sender.tag来判断用户当前点击是那个按钮

获取原始的frame
修改frame
把修改后的值传给原始的frame

frame(包含位置和大小x, y表示左上角的坐标)CGRect
center(只能修改位置,表示的是控件中心点的坐标)CGSize
bounds(修改大小)CGRect
transform(旋转)


NSStringFromCGRect();

增加动画两种方式
1.头尾式
  1).开启动画
    [UIView beginAnimations:nil context:nil];
  2).设置动画执行时间
           [UIView setAnimationDuration:2];
————中间这里是要执行的动画的代码----------------
 3).提交动画
    [UIView commitAnimations]
2.Block式
 1).[UIView animateWithDuration:持续时间 animations:^{
    self.btnIcon.frame = orignFrame;    
}];

当要显示一个界面的时候,首先创建这个界面对应的控制器,控制器创建好以后,接着创建控制器所管理的那个view,当这个view加载完毕以后就开始执行下面的方法了。
所以只要viewDidLoad方法被执行了,就表示控制器所管理的view创建好了

动态创建我们自已的按钮
1.创建按钮  UIButton *button= [[UIButton alloc]init]
设置按钮上显示的文字﹕[button setTitle:@“点我吧” forState:UIControlStateNormal]   默认状态下的显示文字
       [button setTitle:@“摸我干啥” forState:UIControlStateHighlighted];

设置默认状态下的背景图片
UIImage *imgNormal = [UIImage imageNamed:@“   “];

    [button setBackgroundImage:imgNormal forState: UIControlStateNormal];
设置高亮状态下的背景图片
    [button setBackgroundImage:imgHighlighted forState:UIControlStateHighlighted];
设置不同状态下的文字颜色
[button setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
[button setTitleColor:[UIColor blueColor] forState:UIControlStateHighlighted]
设置按钮的frame
   button.frame=CGRectMake(50, 100, 100, 100);
把动态创建的按钮加到控制器所管理的那个view中
       [self.view addSubview:button]
通过代码为按钮注册一个单击事件
[button addTarget:self action:@selector(buttonClick) forControlEvents:UIControlEventTouchUpInside];

去除autolayout
1.如果发现通过代码无法修改控件的位置或者尺寸时,应该去掉storyboard里面的autolayout功能,这是自ios6开始出现的特性
2.顾名思义,autolayout是用来自动布局的,用来束䌸控件的位置和尺寸,去掉这个功能,控件的位置和尺寸就不再有一些固定的束䌸



PNG 格式的图片格式可以省略


transform属性可以修改控件的位移,缩放,旋转
创建一个transform属性
CGAffineTransform CGAffineTransformMakeTransaltion(CGFloat tx, CGFloat ty)  // 平移
CGAffineTransform CGAffineTransformMakeScale(CGFloat sx, CGFloat sy); // 缩放
CGAffineTransform CGAffineTransformMakeRotation(CGFloat angle)
//旋转
在某个transform的基础上进行叠加
CGAffineTransform CGAffineTransformTranslate(CGaffineTransform t, CGFloat tx, CGFloat ty);
CGAffineTransform CGAffineTransformScale(CgAffineTransform t, CgFloat sx, CgFloat sy);
CGAffineTransform CGAffineTransformRotate(CGAffineTransform t, CGFloat angle);

清空之 前设置的transform属性
view.transform = CGAffineTransformIdentity;

posted @ 2015-06-11 20:03  姚锦辉  阅读(127)  评论(0编辑  收藏  举报