iOS基础(二)

UIView

  • 视图,表示屏幕上的一块矩形区域,同时处理该区域的绘制和触屏事件。
  • 一个视图也能够做为其余视图的父视图,同时决定着这些子视图的位置和大小.
  • UIView类作了大量的工做去管理这些内部视图的关系。
  • 视图同时也是App中MVC的View部分
  • iPhone的视图以左上角为原点
  • 每一个View的frame所使用的坐标系以它的父视图的左上角为坐
    关函数

    • 视图结构和相
CGPoint Point = CGPointMake(x,y);//设置
    CGSize size = CGSizeMake(width,height);//大小
    CGRect rect = CGRectMake(x,y,width,height);//位置和大小

Frame和Bounds

  • Frame以其父视图为起点,得出它本身的位置信息
  • Bounds以iOS系统的坐标原点为起点,坐标是(0,0)
  • Center表示视图中心所在的位置,设置此属性可改变视图的位置

    • 默认状况下,视图边框并不会被父视图的边框裁剪。若是须要裁剪,将其clipsToBounds属性设置为YES.

建立UIView

  • 建立UI有两种方式,xib文件和代码建立

```Objective-c
//经过xib方式来建立视图对象
NSBundle *bundle = [NSBundle mainBundle];
NSArray *arr = [bundle loadNibNamed:@"myView" owner:self
options:nil];
UIView *myView = [arr objectAtIndex:0];数组


```Objective-c //代码建立视图对象 CGRect viewRect = CGRectMake(0,0,100,100); UIView *myView =[[UIView alloc] initWithFrame:viewRect];

视图的层次结构

  • UIView层次结构能够理解为“视图树”————view hierarychy
  • 一个视图就是一个容器,当一个视图包含其余的视图的时候,两个视图之间就创建了一个父子关系,被包含的视图被称为“姿式图(subView)”,包含的视图称为“父视图(superView)”
  • 从视觉上看,子视图会覆盖父视图的内容,设置透明属性能够看到父视图的内容。
  • 每一个父视图都有一个有序的数组存储着它的子视图,存储的顺序就会影响到每一个子视图的显示效果,后加的视图会覆盖以前的视图。
  • 一个视图能够嵌入多个subView,可是只能有一个superView。

    • 视图的经常使用方法
      ```Objective-c
      addSubView: // 添加子视图
      insertSubview:atIndex: // 视图插入到指定索引位置
      insertSubview:ahoveSubview: // 视图插入指定视图之上
      insertSubview:belowSubview: // 视图插入指定视图之下
      bringSubviewToFront: // 把视图移动到最顶层
      sendSubviewToBack: // 把视图移动到最底层
      exchangeSubViewAtIndex:withSubviewAtIndex://把两个索引对应的视图调换位置
      removeFromSuperview: // 把视图从父视图中移除

##查找视图 - UIView类中有一个tag属性,经过这个属性能够标志一个视图对象(整数) - 获取的方法,viewWithTag:方法来检索标志过的子视图 ```Objective-c UIView *myView = [[UIView alloc] initWithFrame:CGRectmake(0,0,100,100)]; myView.tag = 100; // 经过tag查找view UIView *myView = [self.view vieWithTag:100];

UIView的经常使用属性

  • alpha // 透明度
  • backgroundColor // 背景颜色
  • subViews // 子视图集合
  • hidden // 是否隐藏
  • tag // 标签值
  • superview // 父视图
  • mulitpleTouchEnaled // 是否开启多点触摸
  • userInteractionEnabled // 是否响应触摸事件

坐标系统变换

  • 坐标变换经过transform属性来改变

    • CGAffineTransformScale 对视图比例缩放
    • CGAffineTransformRotae 对视图作变焦旋转
    • CGAffineTransformTranslate 对视图相对原位置作平移
CGAffineTransform transform = rootView.transform;
    rootView.transform = CGAffineTransformScale(transform,0.5,0.5);
    rootView.transform = CGAffineTransformRotae(transform,0.33);
    CGAffineTransformScale(transform,0.5,0.5);
    rootView.transform = CGAffineTransformTranslate(transform,100,100);

视图的内容模式

  • 视图的contentMode属性决定了边界变化和缩放操做
UIImageView *imgeView1 = [[UIImageView alloc] initWithFrame:CFRectMake(320/2-200/2,30,200,200)];
    imgeView1.imge = [UIImage imageNamed:@"01"];
    imgeView1.backgroundColor = [UIColor redColor];
    imgeView1.contentMode = UIViewContentModeScaleAspectFit;
    [self.window addSubview:imgeView1];
    [imView1 release];

    UIImageView *imgeView2 = [[UIImageView alloc] initWithFrame:CFRectMake(320/2-200/2,240,200,200)];
    imgeView2.backgroundColor = [UIColor yelloColor];
    imgeView2.contentMode = UIViewContentModeBottom;
    [self.window addSubview:imgeView2];
    [imView2 release];

UIView属性的动画

  • UIView类的不少属性都被设计为动画,动画的属性是指当属性从一个值变为另外一个值的时候,能够半自动地支持动画,你仍然必须告诉UIKit但愿执行什么类型的动画,可是动画一旦开始,Core Animation就会全权负责。UIView对象中支持动画的属性有以下几个:

    • frame - 动画的改变视图的尺寸和位置
    • bounds - 动画的改变视图的尺寸
    • center - 动画的改变视图的位置
    • transform - 动画的翻转或者缩放视x图
    • alpha - 动画的改变视图的透明度
    • backgroundColor - 改变视图的背景色
    • contentStetch - 改变视图内容如何拉伸

配置动画委托

  • 能够为动画分配一个委托,并经过该委托接受动画开始和结束的消息。当须要在动画开始前和动画结束后极力执行其余任务时,可能就须要设置委托。
  • 经过UIView调用setAnmationDelegate:方法来设置委托,并经过setAnimationWillStartSelector:和setAnimationDidStopSelector:方法来指定接受消息的选择器方法。消息处理方法形式以下:
    (void)animationWillStart:(NSString *)animationID context:(void *)context;
    (void)animationDidStop:(NSString *)animationID finished context:(void *)context;
    上面的两个方法的animationID和context参数和动画块开始时传给beginAnimations:context:方法的参数相同
    + animationID - 应用程序提供的字符串,用于标识一个动画块中的动画
    + context - 应用程序提供的对象,用于向委托对象传递额外的信息函数

    setAnimationDidStopSelector:选择器方法还有一个参数——即一个布尔值。若是动画顺利完成,没有被其余动画取消或中止,则该值为YES。动画

配置动画的参数

  • setAnimationStartDateS方法来设置动画在commitAnimations:方法返回以后的发生日期。
  • setAnimationDelay:方法来设置实际发生动画和commitAnimations:方法返回的时间点之间的间隔
  • setAnimationDuration:方法来设置动画的持续秒数
  • setAnimationCurve:方法来设置动画过程的相对速度,好比动画可能在启动阶段逐渐加速、而在结束阶段逐渐减小,或者这个过程都保持相同的速度
  • setAnimationRepeatCount:方法来设置动画的重复次数
  • setAnimationRepeatAutoreverses:方法来指定动画在到达目标值时是否自动反向播放。但是结合使用这个方法和setAnimationRepeatCount:方法,使各个属性在初始值和目标值之间平滑切换一段时间。
  • 缺省状况下,全部支持动画的属性在动画块中发生的变化都会造成动画。若是但愿让动画块中发生的某些变化不产生动画效果,能够经过setAnimationsEnableed:方法来暂时禁止动画,在完成修改后才从新激活动画,在调用setAnimationsEnabled:方法并传入NO值以后,全部的改变都不会产生动画效果,指定用YES值再次调用这个方法或者提交这个动画块是,动画才会恢复,能够用areAnimationsEnable:方法来肯定当前是否激活动画。
-(void)animationAlpha
    {
        [UIView beginAnimations:nil context:NULL];// 须要设置代理时
        [UIView setAnimationDuration:1];// 动画的持续时间
        [UIview setAnimationDelay:1];// 动画延迟时间
        view2.apleha = 0.0;
        [UIView commitAnimations];// 标记着动画块的结束
    }
    -(void)animationFrame
    {
        [UIView beginAnimations:nil context:NULL];
        [UIView setAnimationDuration:5];
        [UIView setAnimationCurve:UIViewAnimationCurveEaseOut];// 动画相对速度,开始和结束的时候慢,中间快
        view.center = CGPointMake(0,0);
        [UIView commitAnimations];
    }
相关文章
相关标签/搜索