1 、全局变量,变量名前加下划线。和系统一致。

2 、 nil指针为空   @“”字符串为空 (内容为空)
       ==  判断内存地址   基本变量
    对于一些基本类型 可以使用==来判断,但对于指针类型,使用==则判断的是指针保存的内容地址是否相等,而不是判断内存地址下的内容是否相等(应该通过方法来判断)


多个指针可以这向同一个对象


3 、判断两个字符串是否相等用 isEqualToString:@“”


4、警告框
      不需要设置fram
      不需要addSubview
     如果需要添加多个按钮,在最后一个参数中添加,用逗号隔开,以nil结尾 

5 、RGBA 0.0~1.0 灰度(亮度值)      0  0  0 黑色      1 1 1白色
6 、control以及其子类都可以绑定方法
7、默认在图片上添加按钮,按钮是不能被点击的,是因为默认图片视图不可交互
imageView.userInteractionEnable = YES;设置可交互


父视图可交互 子视图是否可交互看子视图自己
父视图不可交互 子视图也不可交互


默认不可交互的 UILabel  UIImageView

点击登陆视图上的注册按钮,先把登陆视图移出再添加注册视图
点击注册视图上的的返回按钮,先把注册视图移出再添加登陆视图

========================================
标题黑色23号字体
注释绿色20号字体
内容黑色20号字体
==========================




1 动画
// 1  开始动画    beginAnimations
[UIView beginAnimations:nil context:nil];
//3 设置动画时间   setAnimationDuration
[UIView setAnimationDuration:3];
[UIView 
//设置翻转样式
setAnimationTransition:UIViewAnimationTransitionCurlUp forView:self.window cache:YES];
//设置重复自动反向运动
[UIView setAnimationRepeatAutoreverses:YES];
//4 终点坐标
_image.frame = CGRectMake(320-80, 480-80, 80, 80);
//2 提交动画   commitAnimations
[UIView commitAnimations];


2 成为第一响应 键盘自动弹出
[_textFiledYongHuMing becomeFirstResponder]; 成为第一响应
  resignFirstResponder   释放第一响应
//键盘自动消失
(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    NSLog(@"touchesBegan");
    [self.window endEditing:YES];
}
3 视图移除和添加
[_zhuCeView removeFromSuperview];
[self.window addSubview:_loginView];


==================
 
1 视图控制器类
  UIViewController
单一控制视图,不在入口类中添加过多的代码(增加复杂性)
  1 导入头文件
  2 创建视图控制器对象
  3 把对象赋值给self.window.rootViewController = aVi;




2 XIB文件
   早期nib文件, .xib结尾
  1 .File’s    owner  文件所有者,就是指我们的视图控制器aViewController
  2. First Responder  第一响应者
  3.View  是视图控制器默认的view


self.view就是xib里的那个view




3 关联
1. xib上的控件与对象(指针关联)
    1.1 关联按钮,绑定方法
          点击Assistant editor按钮
     1.2 右键xib中的控件,直接拖拽到.h文件的属性区域,松开,在弹出的的对话框中写入变量名,connect
     1.3 注意,如果想要改变关联之后的变量名,必须删除原有的,连线也要切断,重新拖拽.


{
    IBOutlet UITextField *_nameTF;
    //IBOutlet  关键字,就是用来关联指针(.h)和控件(.xib)的
//Outlet 出口
//IB 前缀Interface Builder(接口建设者)
//IB 工具.早期的IB是与XCode分离的不利于开发,现在��到一起
}


按钮设置图片1 setimage 对应Custom类型    2  backgroudimage 对应system类型         二者区别


关联属性IBOutlet
关联方法IBAction


.h中   @property int age; 在.m里可以直接用_age;
如果在.m中创建和_age一样的局部变量,局部变量会覆盖全局变量
在.m中self.age  == _age


关联属性可以将空间拖拽到大括号外(声明区域).如果在大括号外,会自动完成属性的描述,以后使用就可self.age或_age而直接拖拽到大括号中,默认只能使用_age(指针名);


4  知识点:在视图控制器中获取window对象。
在一个类中获取另一个类的window对象来承载view,需要在这个类中通过另一个的对象打点调用window
 (导入头文件)
   1  找window       ZYAppDelegate *app = [UIApplication sharedApplication].delegate;    获取入口类    .delegate系统做这件事,代理
   UIWindow *window = app.window;

   2 
   UIWindow *window = [UIApplication sharedApplication].keyWindow


为什么要用window ?
在window上添加view 




 5 充分理解
window.rootViewController = vc
         把vc赋给window的rootViewController,则默认会调用vc中的viewDidLoad方法(),像这样的只有把vc给rootViewController,运行程序才能在window上显示vc的view


6 把视图控制器的懒加载放置在动画执行下面
window.rootViewController = vc
这里把vc赋给window的rootViewController,则默认会调用vc中的viewDidLoad方法,像这样的只有把vc给rootViewController,运行程序才能在window上显示vc的view,而单纯的创建对象是不能显示,这种方法叫做懒加载(lazy load)


(loadView/nib文件)来加载view到内存 ——>viewDidLoad数据结构使用两种基本操作:推入(push)和弹出(pop):

    推入:将数据放入堆栈的顶端(阵列形式或串行形式),堆栈顶端top指标加一。弹出:将顶端数据资料输出(回传),堆栈顶端资料减一。


    self = [super init];
    if (self)
    {
//      这里的获得的解码过后的对象,用当前的属性保存,要使用self.
        self.nameStr = [aDecoder decodeObjectForKey:KEY_NAME];
        self.phoneStr = [aDecoder decodeObjectForKey:KEY_PHONE];
    }
    return self;
}

相关文章: