# UILabel
   //0.创建一个UILabel UILabel继承与UIView
      UILabel *myLabel = [[UILabel alloc]                initWithFrame:CGRectMake(50, 50, 200, 60)];        
   
   ** //1.设置文本属性**
    myLabel.text = @"好好学习,天天向上。";
    **//2.设置文本字体的颜色**
    myLabel.textColor = [UIColor redColor];
    **//3.设置背景颜色**
    myLabel.backgroundColor = [UIColor greenColor];
    **//4.设置字体的尺寸**
    //常规
    myLabel.font = [UIFont systemFontOfSize:30];

** //粗体**
  myLabel.font = [UIFont boldSystemFontOfSize:30];
 
 **//5.行数设置 默认为1 表示单行 0就表示没有限制 前提是范围足够大 就会自动换行**
    myLabel.numberOfLines = 0;
   
 **//6.设置文本的打断(内容显示不全的情况省略哪一部分)**
    /*
     NSLineBre akByTruncatingHead,   Truncate at head of line: "...wxyz"
     NSLineBreakByTruncatingTail,   Truncate at tail of line: "abcd..."
     NSLineBreakByTruncatingMiddle   Truncate middle of line:  "ab...yz"
     */
    myLabel.lineBreakMode =     NSLineBreakByTruncatingMiddle;

 **//7.设置阴影 (先设置范围,再设置颜色)**
    myLabel.shadowOffset = CGSizeMake(2, -2);
    myLabel.shadowColor = [UIColor brownColor];

**//8.高亮状态下显示的颜色
//
设置处于高亮状态**
    myLabel.highlighted = YES;

**设置高亮状态下文本的颜色**
    myLabel.highlightedTextColor = [UIColor blueColor];
   
9.**设置tag**
mylabel.tag = 110;

10.**设置文本的对齐方式**
/*
     NSTextAlignmentLeft      = 0,    // Visually left aligned
     TARGET_OS_IPHONE
     NSTextAlignmentCenter    = 1,    // Visually centered
     NSTextAlignmentRight     = 2,    // Visually right aligned
     */
  myLabel.textAlignment = NSTextAlignmentCenter;//1

** 11.是否响应用户交互 默认为NO**

mylabel.userInteractionEnabled = YES;

**12.响应事件 默认情况下是开启**
 myLabel.enabled = NO;

**13自动调整尺寸大小
//
让字体适应尺寸**

mylabel.adjustsFontSizeToFitWidth = YES;

**尺寸适应字体**

 [mylabel sizeToFit];
 
**获取tag值对应的label **

UILabel *label = [self.view viewWithTag:1001];


#UILabel附加

 NSString *str = @"今天天气好晴朗,处处好风光";
   
   1. **初始化一个副文本属性**
    NSMutableAttributedString *atteibutedString = [[NSMutableAttributedString alloc] initWithString:str];
  2. **索引指定文字的范围**
    NSRange range = [str rangeOfString:@"天气"];
  3. **  给副文本增加属性**
    [atteibutedString addAttribute:NSForegroundColorAttributeName value:[UIColor blueColor] range:range];
   
   
    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(100, 100, 300, 40)];
  
    label.font = [UIFont systemFontOfSize:26];

   
    label.attributedText = atteibutedString;

   
    [self.view addSubview:label];
   



# UIImageView

    /*
     * UIImageView
     * 1.显示单张图片
     * 2.播放一组图片动画
     * iOS里面 默认是png的图片格式 可以不写后缀
     * 会自动根据 屏幕材质选择使用不同的 分辨率图片。前提是命名规范
     * image.png image@2x.png image@3x.png
     */
   
 1. **创建一个UIImageView视图**
    //UIImage 继承与NSObject
   //UIImageView 继承与UIView
    UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(100, 100, 200, 200)];

2. **背景颜色**

    imageView.backgroundColor = [UIColor yellowColor];

3. **添加图片**
    //创建UIImage对象
   
   UIImage *image = [UIImage imageNamed:@"img.jpeg"];
    imageView.image = image;
       
 4. **设置显示的当前图片内容模式**
    /*
     UIViewContentModeScaleToFill, 拉满铺满视图 默认
     UIViewContentModeScaleAspectFit, 自适应拉伸 不会破坏当前宽高比例
     UIViewContentModeScaleAspectFill, 可以超出视图范围 不会破坏当前宽高比例
     */
    
    imageView.contentMode = UIViewContentModeScaleAspectFill;
   
5. **内容剪裁**

    imageView.clipsToBounds = YES;

6. **高亮状态**
    //高亮状态下的图片
   
    imageView.highlightedImage = [UIImage imageNamed:@"image"];
   
**  开启 先设置高亮状态下的图片 然后再开启// default is NO**
 
      imageView.highlighted = YES;7. **用户交互**    //imageView是默认没开启用户交互的/*     如果讲一个按钮[UIButton] 作为imageView的子视图,默认是无法点击     UIImageView是默认不响应用户交互的     UIImageView会影响子视图 如果UIImageView不响应用户交互 它上面的子视图全部都不响应     */        **开启用户交互**    imageView.userInteractionEnabled = YES; 8. **设置tag值**    imageView.tag = 1001;       [self.view addSubview:imageView];//[self.view addSubview:image];//这个是不可以的 addSubview 只能添加视图9. **创建一个装载图片的数组**    NSMutableArray *imageArray = [NSMutableArray array];for (int i = 1; i <= 21; i++) {    **获取图片的名字** NSString *imageName = [NSString stringWithFormat:@"%d.jpg",i];        //获取图片 UIImage *image = [UIImage imageNamed:imageName];        //把获取到的图片加入数组中        [imageArray addObject:image];}**新创建一个UIImageView**    UIImageView *gifImageView = [[UIImageView alloc] initWithFrame:CGRectMake(50, 350, 300, 300)];    gifImageView.backgroundColor = [UIColor redColor];        [self.view addSubview:gifImageView];       //将图片添加到gifImageView    gifImageView.animationImages = imageArray;     10.**动画的时长**    gifImageView.animationDuration = 1;     11. **动画是否重复**    gifImageView.animationRepeatCount = 0;     12. **手动开启动画**    [gifImageView startAnimating];  13.  **让动画暂停**        [gifImageView stopAnimating];         14. **延时调用**    [self performSelector:@selector(stop:) withObject:gifImageView afterDelay:3];    - (void)stop:(UIImageView *)sender {    [sender stopAnimating];}# UIControl/* * UIControl * 可以用它的子类来具体的控制 [点击、滑动] *子类有:UIButton,UITextField,UISlider,UISwitch,UIDatePicker,UIPageControl,UISegmentedControl * 自定义控件对象 [系统提供的控件没有适合我的,我就自己去创造(封装)一个处理事件的控件]  *  */  1. **创建一个UIControl **     UIControl *control = [[UIControl alloc] initWithFrame:CGRectMake(30, 30, 100, 100 )];    control.backgroundColor = [UIColor blueColor];    [self.view addSubview:control];2. /*     * UIControl 可以为控件绑定一个目标 动作 及 触摸时机     * 可以 多个控件 绑定一个 目标动作     * 可以 一个控件 绑定多个 目标动作     * addTarget:可以是任意对象的响应     * action:动作     * forControlEvents: 事件[点击就松手...]     */        **点击后松手且位置处于控件区域**    [control addTarget:self action:@selector(touchUpInsideAction) forControlEvents:UIControlEventTouchUpInside];      ** 点击之后立刻响应**    [control addTarget:self action:@selector(touchDownAction) forControlEvents:UIControlEventTouchDown];      **拖拽滑动了**    [control addTarget:self action:@selector(touchDragInside) forControlEvents:UIControlEventTouchDragInside];     **触摸取消 [触摸还在发生的时候,屏幕失去了焦点 例如:电话、锁屏]**    [control addTarget:self action:@selector(touchCancel) forControlEvents:UIControlEventTouchCancel];   }- (void)touchUpInsideAction {    NSLog(@"点击之后且松手的时候也在该控件区域");}- (void)touchDownAction {    NSLog(@"点击之后立刻响应");}- (void)touchDragInside {    NSLog(@"滑动拖拽的时候响应(在内部)");}- (void)touchCancel {    NSLog(@"取消");}#UIControl深入用法//创建一个继承于UIComtrol的子类JokerControl//让JokerControl成一个控件类1. **触摸开始**- (BOOL)beginTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event {       //UITouch 触摸对象 指触摸的时候屏幕上面的手指    //获取到触摸所在视图的点的位置    CGPoint touchPoint = [touch locationInView:self];//本视图上面的位置       NSLog(@"获取触摸所在视图上的位置:%@",NSStringFromCGPoint(touchPoint));       return YES;}2.**触摸继续**- (BOOL)continueTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event {        NSLog(@"一直在触摸中");       //根据触摸对象 获取到触摸点    CGPoint touchPoint = [touch locationInView:self];    NSLog(@"获取触摸所在视图上的位置:%@",NSStringFromCGPoint(touchPoint));       return YES;}3. **触摸结束**- (void)endTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event {    //获取到结束的时候 触摸点在哪    CGPoint touchPoint = [touch locationInView:self];    //判断触摸点 是否在矩形范围内  self.bounds当前矩形大    //第一个参数:需要进行判断的矩形大小    //第二个参数:当前的触摸点    //返回值:布尔类型    CGRectContainsPoint(self.bounds, touchPoint);       if (CGRectContainsPoint(self.bounds, touchPoint)) {        NSLog(@"在触摸范围内");    }else {        NSLog(@"不在触摸范围内");    }    //在切换的时候,发送事件的变化 然后UIControl的Action接收事件发送    [self sendActionsForControlEvents:UIControlEventEditingDidEnd];}4.**取消**- (void)cancelTrackingWithEvent:(UIEvent *)event {   }**更新UI界面,给予动态效果    [UIView animateWithDuration:0.3f animations:^{        changeView.transform = CGAffineTransformMakeScale(1.5, 1.5);    } completion:^(BOOL finished) {        changeView.transform = CGAffineTransformIdentity;    }];**    #UIButton1. **手动创建按钮**  // UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(200, 200, 100, 100)];  //UIButtonTypeCustom 自定义外观    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];    button.frame = CGRectMake(50, 200, 100, 100);      2.** 设置背影颜色**    button.backgroundColor = [UIColor grayColor];3. **绑定目标动作**      addTarget:可以是任意对象的响应      action:动作      forControlEvents: 事件[点击就松手...]    [button addTarget:self action:@selector(buttonAction:) forControlEvents:UIControlEventTouchUpInside];    4. **设置一个标题**    [button setTitle:@"普通状态" forState:UIControlStateNormal];    [button setTitleColor:[UIColor grayColor] forState:UIControlStateNormal];       [button setTitle:@"收藏成功" forState:UIControlStateSelected];    [button setTitleColor:[UIColor redColor] forState:UIControlStateSelected];5. **设置图片**  setImage:forState: 使用的是图片的原始大小 让按钮显示的很精致 如果frame够大 点击也很方便    //setBackgroundImage: 设置成功幕后背景 但是会拉伸图片   /* UIControlStateNormal   UIControlStateHighlighted    //used when UIControl isHighlighted is set      UIControlStateDisabled       UIControlStateSelected                   //flag usable by app (see below)       UIControlStateFocused    // Applicable only when the screen supports focus      UIControlStateApplication      // additional flags available for application use      UIControlStateReserved    //flags reserved for internal framework use               */           [button setImage:[UIImage imageNamed:@"playing_btn_love@2x"] forState:UIControlStateNormal];    [button setImage:[UIImage imageNamed:@"playing_btn_in_myfavor_h@2x"] forState:UIControlStateHighlighted];       [button setImage:[UIImage imageNamed:@"playing_btn_in_myfavor@2x"] forState:UIControlStateSelected];6.**设置背影图片**    [button setBackgroundImage:[UIImage imageNamed:@"playing_btn_love@2x"]      forState:UIControlStateNormal];      [button setBackgroundImage:[UIImage imageNamed:@"playing_btn_in_myfavor@2x"] forState:UIControlStateSelected];7. **和用户交互有关的属性**       //不可以交互 继承与UIControl的属性 会影响界面    button.enabled = NO;       default is YES. if NO, ignores touch events and subclasses may draw differently默认是是。如果没有,忽略触摸事件和子类可能会有不同的绘制             //继承于UIView 和视图有关的 不可以交互    button.userInteractionEnabled = NO;       // default is NO       #封装UIButton**为什么我们要自己来封装一个控件? 有时候,我们在使用Apple提供的这些控件中,有的不适合我们的项目。那么我们对其进行一个“改造”。创造利于我们开发的一些控件。会节省时间,节省代码量。 **    + (MMButton *)button {       1. **通过父类的方法创建**    MMButton *button = [MMButton buttonWithType:UIButtonTypeCustom];     2.  **在初始化的时候 设置开关打开**//    self.isOn = YES; //在这里 类方法中 self 指代是 类    button.isOn = YES;      3. **设置背景图片**    [button setBackgroundImage:[self creatImageWithName:@"green-out"] forState:UIControlStateNormal];    [button setBackgroundImage:[self creatImageWithName:@"green-in"] forState:UIControlStateHighlighted];      4. **系统按钮 设置标题**    [button setTitle:@"开" forState:UIControlStateNormal];    [button setTitle:@"开" forState:UIControlStateHighlighted];       5. **字体颜色**    [button setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];    [button setTitleColor:[UIColor lightGrayColor] forState:UIControlStateHighlighted];   6. **字体**    button.titleLabel.font = [UIFont boldSystemFontOfSize:27.f];     7.  **增加开关的动作**    [button addTarget:button action:@selector(buttonTap:) forControlEvents:UIControlEventTouchUpInside];      8. **放大**    [button addTarget:button action:@selector(zoomScale:) forControlEvents:UIControlEventTouchDown];       return  button;}9. **这个是button被点击之后要做的事情**- (void)buttonTap:(MMButton *)button {    //按钮状态要切换    self.isOn = !self.isOn;       if (_isOn) {       //设置背景图片        [button setBackgroundImage:[self creatImageWithName:@"green-out"] forState:UIControlStateNormal];        [button setBackgroundImage:[self creatImageWithName:@"green-in"] forState:UIControlStateHighlighted];               //系统按钮 设置标题        [button setTitle:@"开" forState:UIControlStateNormal];        [button setTitle:@"开" forState:UIControlStateHighlighted];                //字体颜色        [button setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];        [button setTitleColor:[UIColor lightGrayColor] forState:UIControlStateHighlighted];        //字体        button.titleLabel.font = [UIFont boldSystemFontOfSize:27.f];    }else{        //设置背景图片        [button setBackgroundImage:[self creatImageWithName:@"red-out"] forState:UIControlStateNormal];        [button setBackgroundImage:[self creatImageWithName:@"red-in"] forState:UIControlStateHighlighted];               //系统按钮 设置标题        [button setTitle:@"关" forState:UIControlStateNormal];        [button setTitle:@"关" forState:UIControlStateHighlighted];                //字体颜色        [button setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];        [button setTitleColor:[UIColor lightGrayColor] forState:UIControlStateHighlighted];        //字体        button.titleLabel.font = [UIFont boldSystemFontOfSize:27.f];    }       [self identity:button];       /*    [UIView animateWithDuration:0.3 animations:^{        button.transform = CGAffineTransformMakeScale(1.2, 1.2);    }completion:^(BOOL finished) {        button.transform = CGAffineTransformIdentity;    } ];    */}10.**放大**- (void)zoomScale:(MMButton *)button {    [UIView animateWithDuration:0.3 animations:^{        button.transform = CGAffineTransformMakeScale(1.2, 1.2);    }];}11. **还原**- (void)identity:(MMButton *)button {    [UIView animateWithDuration:0.3 animations:^{        button.transform = CGAffineTransformIdentity;    }];}12. **将图片拉伸的方法**+ (UIImage *)creatImageWithName:(NSString *)name {    //UIEdgeInsetsMake:CGFloat top, CGFloat left, CGFloat bottom, CGFloat right    //拉伸图片 在图片的上 左 下 右 4个边缘指定要拉伸的部分。UIEdgeInsetsMake是个结构体。不需要拉伸的地方就传0,表示拉伸为0    return [[UIImage imageNamed:name] resizableImageWithCapInsets:UIEdgeInsetsMake(0.0, 110.0, 0.0, 110.0)];}- (UIImage *)creatImageWithName:(NSString *)name {    return [[UIImage imageNamed:name] resizableImageWithCapInsets:UIEdgeInsetsMake(0.0, 110.0, 0.0, 110.0)];}                         #UITextField//    文本框 UITextFiled 继承与 UIControl0. **创建UITextFiled**     UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(100, 100, 200, 60)];    1.**设置tag值***    textField.tag = 1001;      2. **外框的风格**    /*     UITextBorderStyleNone,     UITextBorderStyleLine,     UITextBorderStyleBezel, 凹进去     UITextBorderStyleRoundedRect 圆角     */    textField.borderStyle =   UITextBorderStyleRoundedRect;    3.**设置 文本框的内容/ 获取 文本框的内容 **    NSString *str = textField.text;    textField.text = @"hello world";       4.**字体**    textField.font = [UIFont boldSystemFontOfSize:14];//    textField.font = [UIFont systemFontOfSize:<#(CGFloat)#>];       5.**对齐方式**    textField.textAlignment = NSTextAlignmentCenter;       6. **输入提示**    textField.placeholder = @"请输入密码";       7. **设置键盘的样式**    textField.keyboardType = UIKeyboardTypeDefault;//默认的       8. **是否支持清除**    //这个清除按钮什么时候显示    textField.clearButtonMode = UITextFieldViewModeAlways;       //默认是NO 设置为YES时,当输入完成之后,再次让这个UITextFiled成为第一个响应者的时候 就清空上次输入的内容    textField.clearsOnBeginEditing = YES;       9. **是否可用**   textField.enabled = NO; 继承与UIControl   textField.userInteractionEnabled = NO;    10. **安全输入(输入密码的情况下)**    textField.secureTextEntry = YES;       11. **设置键盘右下角的类型**      textField.returnKeyType = UIReturnKeyDone;       12. **设置文本框的代理**    textField.delegate = self;     13. **文本框将要修改内容的时候**    - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {       //string => 新输入的内容    NSLog(@"string == %@",string);       //range 新内容所在的位置    NSLog(@"range = %@",NSStringFromRange(range));       //模拟输入手机号码 给用户限定11位数    if (range.location <= 10) {        return YES;    }       //返回NO 输入框的内容将不会改变    return NO;   }- (BOOL)textFieldShouldReturn:(UITextField *)textField {    //当用户点击了返回这个按钮 收起键盘 发送文本    [textField resignFirstResponder];    NSLog(@"%@",textField.text);       //是否返回    return YES;}- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {       NSLog(@"文本框开始编辑");       //让键盘失去对应的响应   // [self.view endEditing:YES];       //如果返回的是NO  那么文本框就不允许编辑 键盘不会弹出    return YES;}- (void)textFieldDidBeginEditing:(UITextField *)textField {    // became first responder    NSLog(@"文本框已经在编辑的时候");       //让键盘失去对应的响应    [self.view endEditing:YES];   }- (BOOL)textFieldShouldEndEditing:(UITextField *)textField {       NSLog(@"文本框快要结束编辑的时候");       return YES;}- (void)textFieldDidEndEditing:(UITextField *)textField {    NSLog(@"已经结束编辑的时候");   }#UISlider //UISlider 继承与 UIControl1.**创建UISlider**//height是指整个UISlider控件的高度 而不是指 线 的宽度!!    UISlider *slider = [[UISlider alloc] initWithFrame:CGRectMake(50, 100, 270, 30)];2. **颜色**    slider.backgroundColor = [UIColor brownColor];    3. **添加事件**    [slider addTarget:self action:@selector(sliderAction:) forControlEvents:UIControlEventValueChanged];    //silder 是value发生变化    //button 点击    //textField 点击 编辑    4.  **设置最大/最小值**    slider.maximumValue = 10;    slider.minimumValue = 0;     5.  **设置是否连续响应 默认是YES (当整个触摸事件结束后才会响应[当value发生变化结束后才会响应])**    slider.continuous = NO;      6. **设置最大/最小轨迹的颜色**    slider.maximumTrackTintColor = [UIColor redColor];    slider.minimumTrackTintColor = [UIColor greenColor];      7.**设置轨迹图片**   [slider setMinimumTrackImage:[UIImage imageNamed:@"Star-Gold"] forState:UIControlStateNormal];     [slider setMaximumTrackImage:[UIImage imageNamed:@"Star-White-Half"] forState:UIControlStateNormal];      8. **设置大头针**    [slider setThumbImage:[UIImage imageNamed:@"Star-Gold"] forState:UIControlStateNormal];      9.  **设置最大/最小值得图片**    [slider setMinimumValueImage:[UIImage imageNamed:@"Star-Gold"]];    [slider setMaximumValueImage:[UIImage imageNamed:@"Star-White-Half"]];        10. **模拟音乐播放器的进度条**    [NSTimer scheduledTimerWithTimeInterval:1.f target:self selector:@selector(timeAction:) userInfo:slider repeats:YES];   }- (void)sliderAction:(UISlider *)sender {       NSLog(@"%.2f",sender.value);     _index = sender.value;}- (void)timeAction:(NSTimer *)sender {       _index ++;       //利用tag值拿到       //sender.userInfo 拿到 slider    UISlider *slider = sender.userInfo;       //给slider设置值    [slider setValue:_index animated:YES];      }
 
 
 
 
 
 
 
 
1.棋盘[奇偶数] 获取屏幕尺寸 [UIScreen mainScreen].bounds.size.width  height

2.七彩旋转
>缩放视图
>随机颜色 rand()%11 -> 0~10
>定时器

3.UILabel
>backgroundColor
>frame 与 bounds 的区别 f->是以父视图的左上角为原点 b->以自己左上角为原点
>text
>tag
>font  bold~粗体
>linebreakMode 省略那一部分
>textColor
>textAlignent
>numberOfLines  默认是1  设置为0就是自动换行
>sizeTfit 根据内容调整 字体大小
>shadow 阴影 shadowColor shadowoffset
>高亮的效果

4.UIImamgeView
>加载图片的
>imageView.image = [UIImage imageNamed:~];
>如果要让imageView响应用户交互 默认是不打开的  需要我们去开启 user~
>图片的填充方式 fit \ fill
>clipsToBounds

5.UIControl
>一般不用它,用它子类控件  因为子类更加明显的指出适用于哪些交互。
>自定义可交互控件的话,必须要继承或者间接继承UIControl
>addTarget:(谁来做) Action:动作 Event:事件类型 (点击、值的改变、编辑)

6.UIButton继承于UIControl
>setTitle:  forState:
>setImage: ~  这个图片 是原图尺寸
>setbackgroundImage: 图片会被拉伸
>normal highly select

7.UITextFiled
>文本框
>placeholder 提示输出
>borderstyle 框的样式
>keyboardType 键盘
>clearButtonmode 清除键
>securetextentry
>设置retur键的样式
>delegate  开始编辑 已经编辑 在编辑 开始结束编辑 已经结束编辑 按下return键进行操作

8>UISlider
>滑块
>max min 设置图片trucking~会拉伸  另一个2个端点
>大头针的样式
>中间的线的高度是固定的
>响应方式:连续响应  停止之后再响应
>事件:valueChange
 
 
 
 
 
1.窗口和视图的关系。UIWindow继承于UIView,窗口可是容纳视图内容。

2.窗口的作用:
1>容器
2>处理事件,分发事件
3>和视图控制器一起协作管理app

3.视图的作用:
1>一块矩形的区域(画布),用来填充内容(画图)。具体的内容可以使用精确的子类来表示。
2>既可以绘制内容,也可以实现属性动画。
3>布局和管理子视图
4>处理事件(UIView是继承与UIResponder)

4.视图的显示:
平面几何来决定的。frame、bounds、center
1>frame 坐标 尺寸
2>bounds 坐标(0,0) 、size
3>center 坐标

5.通过 Interface Builder创建视图。以前是 Nib 二进制的数据类型  , 现在 xib (XML数据类型文件)   编译打包之后 其实还是Nib文件。

6.重构
/*
 * 程序是不断优化升级的
 * 优秀的代码是不断地优化
 * 编码 更重要的是要让人看得懂 可读性 要强。
 * 重复的代码 抽出来 构造成一个方法 来调用
 * 相似的功能 某些配置不一样 可以抽出来一个方法 留一个参数来灵活调用
 */

7.视图树  层次结构:每一个视图只有一个父视图 可以有若干个子视图
利用tag 来遍历视图树 查找标记过的视图

8.仿射变换  在旋转后,frame和bounds的不一定一样。

9.UIView的属性动画。 UIView类方法 支持一些属性的改变动画。

10.颜色的RGBA 。 表示的方法:255色阶 255表示颜色最深       #16进制编码的方式 FF表示颜色最深 #xx xx xx  #00FF00 ->green
UIKit框架里面  UIColor colorWithRed: green: blue: alpha 取值范围0~1