码迷,mamicode.com
首页 > 其他好文 > 详细

第2课、UIView的常用属性

时间:2014-07-29 11:40:27      阅读:315      评论:0      收藏:0      [点我收藏+]

标签:des   style   blog   http   color   使用   os   io   

 

第一部分:父子视图属性

  

1. superview : 获得自己的父控件对象。

2. subviews  : 获得自己的所有子控件对象。

注意:

  1)一个视图最多只能有一个父视图。

  2)一个视图可以有多个子视图。

 

  

   部分代码:

  

//系统加载完storyboard之后,会自动执行。
- (void)viewDidLoad
{
    [super viewDidLoad];
    
    //ViewController会自动有一个UIView,这个RootView,根视图没有superView。
    UIView * mySuperView = self.view.superview;
    NSLog(@"superView==%@", mySuperView);
    
    
    
    NSArray * mySubViews = [self.view subviews];
    NSLog(@"子视图数量:%i", [mySubViews count]);
    
    
    
    for (UIView * view in self.view.subviews) {
        NSLog(@"%@", view);
    }
    
    
    //子视图的父视图
    UIView * sView = _subView1.superview;
    NSLog(@"子视图的父视图==%@", sView);
    
    
    //(黄色)子视图的子视图
    for (UIView * view in _subView1.subviews) {
        NSLog(@"子视图的子视图===%@", view);
    }
    
    /*
        总结:
            1. 一个视图最多只能有一个父视图。
            2. 一个视图可以有多个子视图。
     */
}

 

 

 

第二部分:位置尺寸属性

 

  1. frame

    控件所在矩形框的位置和尺寸(以父控件的左上角为坐标原点)

  2. bounds 

    控件所在矩形框的位置和尺寸(以自己左上角为坐标原点,所以bounds的x和y永远为0)

  3. center

    控件中点的位置(以父控件的左上角为坐标原点),通过center属性设置视图位置更加方便

 

  注意:

    1)用frame和center可以修改UIView的位置

    2)用frame和bounds可以修改UIView的尺寸

    3)通常:修改自身位置大小时使用frame,而子视图(控件)在设置位置时,会相对父视图的bounds进行设置

 

  frame和bounds属性区别的示意图

 

bubuko.com,布布扣

 

 

  第三部分 标记属性

    tag整数

      控件的ID(标记),父控件可以通过tag来找到或区分子控件。

    部分代码: 根据tag,区分不同的按钮点击。

- (IBAction)ViewProperts:(UIButton *)sender
{
    NSLog(@"sender.tag===%i", sender.tag);
    switch (sender.tag) {
        case 0:
        {
             NSLog(@"Frame: %@", NSStringFromCGRect(_subView1.frame));
        }
            break;
        case 1:
        {
             NSLog(@"Bounds: %@", NSStringFromCGRect(_subView1.bounds));
        }
            break;
        case 2:
        {
            NSLog(@"Center: %@", NSStringFromCGPoint(_subView1.center));
        }
            break;
            
        default:
            break;
    }
}

 

 

第三部分: 形变属性

transform

  控件的形变属性(可以设置旋转角度、比例缩放、平移等属性)

 

注意

  UIView一次只能应用一个形变属性

  设置transfrom会改变UIView的frame属性,但不会改变bounds属性.

  CGAffineTransformMakeScale相对UIView的初始状态进行形变.

  CGAffineTransformScale相对UIView的当前状态进行形变.

 

//旋转视图
- (IBAction)onClickRotate:(id)sender
{
    //旋转角度的参数是弧度值
    //弧度值是一个浮点数
    //180°的角度对应的弧度值是PI,  90° = PI/2 ,  45° = PI/4
    //--(1)使用CGAffineTransformMakeXXXX方法是相对视图初始位置的变形。
    //CGAffineTransform transform = CGAffineTransformMakeRotation(M_PI_4);
    //--(2)累加旋转
    CGAffineTransform transform = CGAffineTransformRotate(_subView1.transform, M_PI_4);
    [_subView1 setTransform:transform];
}

//缩放视图
- (IBAction)onClickScale:(id)sender
{
    //点一下,放大,再点一下,缩小。
    CGAffineTransform transform;
    if (_subView1.tag == 0)
    {
        transform = CGAffineTransformScale(_subView1.transform, 1.2, 1.8);
        [_subView1 setTag:1];
    }
    else
    {
        transform = CGAffineTransformScale(_subView1.transform, 1.0/1.2, 1.0/1.8);
        [_subView1 setTag:0];
    }
    
    //sx:水平方向缩放的比例
    //sy:垂直方面缩放的比例
    //函数:
    //CGAffineTransform transform = CGAffineTransformScale(_subView1.transform, 1.2, 1.8);
    
    [_subView1 setTransform:transform];
}


//平移视图
- (IBAction)onClickTranslation:(id)sender
{
    CGAffineTransform transform;
    transform = CGAffineTransformTranslate(_subView1.transform, 10.0, 20.0);
    [_subView1 setTransform:transform];
}

 

 

 第四部分 UIView封装的简单动画效果

 

    //定义动画效果

    [UIView beginAnimations:nil context:nil];

    // 设置动画持续时间

    [UIView setAnimationDuration:.3];

    // 需要动画的代码段

    [UIView commitAnimations];

 

  //不建议用如下的: XCODE4.1 就不建议这么用了。 可以选择块代码。

//旋转视图
- (IBAction)onClickRotate:(id)sender
{
    CGAffineTransform transform = CGAffineTransformRotate(_subView1.transform, M_PI_4);

    //**加个动画效果**
    
    //1)定义动画效果
    [UIView beginAnimations:nil context:nil];
    
    //2)默认动画时间长度为0.2秒,(改为1.0秒)
    [UIView setAnimationDuration:1.0f];
    
    //设置子视图的形变属性
    [_subView1 setTransform:transform];
    
    //3)提交动画效果
    [UIView commitAnimations];
    
}

 

块代码,实现动画效果:

[UIView animateWithDuration:1.0f animations:^{
        [_subView1 setTransform:transform];
    } completion:^(BOOL finished) {
        NSLog(@"动画完成!");
    }];

 

UIView封装了三个块动画方法

 

[UIView animateWithDuration:animations:]

[UIView animateWithDuration:animations:completion:]

[UIView animateWithDuration: delay: options: animations: completion:]

 

对比beginAnimations动画的方式,块动画具有以下几点优势:

  1)可以在动画完成时做一些其他的任务

  2)可以设置动画延迟及动画效果选项

  3)块动画支持嵌套

 

 

 

                    ---  iCode , 爱生活。 

 

 

 

 

 

 

 

 

第2课、UIView的常用属性,布布扣,bubuko.com

第2课、UIView的常用属性

标签:des   style   blog   http   color   使用   os   io   

原文地址:http://www.cnblogs.com/iCodePhone/p/3874186.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!