• iOS开篇——UI之UIView


    UIView的几个主要属性

    1     /*
    2      CGRect            frame;
    3      
    4      CGRect            bounds;
    5     
    6      CGPoint           center;
    7      
    8      CGAffineTransform transform;
    9      */

    frame 坐标与长宽

    center 中心点

    bounds 坐标系限制(?)

    UIView的形变

        //view的变形 ()
        
        //直接形变 
        view.transform = CGAffineTransformMakeScale(1, 1);
        
        //旋转形变 传入一个弧度
        view.transform = CGAffineTransformMakeRotation(M_PI);
        
        /*
         #define M_E         2.71828182845904523536028747135266250    e
    #define M_LOG2E     1.44269504088896340735992468100189214    log2(e)        
    #define M_LOG10E    0.434294481903251827651128918916605082   log10(e)       
    #define M_LN2       0.693147180559945309417232121458176568   loge(2)        
    #define M_LN10      2.30258509299404568401799145468436421    loge(10)       
    #define M_PI        3.14159265358979323846264338327950288    pi             
    #define M_PI_2      1.57079632679489661923132169163975144    pi/2           
    #define M_PI_4      0.785398163397448309615660845819875721   pi/4           
    #define M_1_PI      0.318309886183790671537767526745028724   1/pi           
    #define M_2_PI      0.636619772367581343075535053490057448   2/pi           
    #define M_2_SQRTPI  1.12837916709551257389615890312154517    2/sqrt(pi)     
    #define M_SQRT2     1.41421356237309504880168872420969808    sqrt(2)        
    #define M_SQRT1_2   0.707106781186547524400844362104849039   1/sqrt(2)
    
         */
        //改变父视图的透明度
        //子视图的透明度也会跟着改变
    
        view.alpha = 0.3;
    //  设置子视图超出范围时切割
        view.clipsToBounds = NO;
        //父视图关闭视图交互
        //关闭交互后 子视图交互也全部关闭
        view.userInteractionEnabled = NO;
        //subView是view的子视图
        [view addSubview:subView];
        //点击超出父视图范围的地方  不会调用
        [button addTarget:self action:@selector(printString) forControlEvents:UIControlEventTouchUpInside];

    若两个Button有重叠部分 则点击重叠部分 点击方法调用的是最上层的  也就是后添加的。

        //arr获取父视图的子视图数组 最底层为0
        NSArray * arr = view.subviews;
        //改变子视图图层关系 都是父视图的方法
        //把视图移动到所有子视图最上面 *
        [view bringSubviewToFront:arr[0]];
        //把子视图移动到所有子视图最下面 *
        [view sendSubviewToBack:arr[2]];
        //把子视图插入到某个视图上面  第一个参数为要移动的视图
        [view insertSubview:arr[2] aboveSubview:arr[1]];
        //把一个子视图 插入到某一个视图的下面
        [view insertSubview:arr[2] belowSubview:arr[1]];
        //把一个视图 插入到某层位置  从底部开始 如果要移动的子视图没有添加到父视图上 会先添加到父视图上
        [view insertSubview:arr[0] atIndex:1];

    UIView动画

    //动画从这里开始
        [UIView beginAnimations:nil context:nil];
        //设置动画执行时间
        [UIView setAnimationDuration:1];
        //设置动画延迟执行时间
        [UIView setAnimationDelay:1];
        
        //设置动画代理
        [UIView setAnimationDelegate:self];
        //动画结束后执行的方法
        [UIView setAnimationDidStopSelector:@selector(changeView)];
        
        //动画执行的内容
        view.frame = self.view.bounds;
        view.backgroundColor = [UIColor greenColor];
        
        //开始执行动画
        [UIView commitAnimations];

    快速设置

       //block动画
        // 时间  延迟 选择动画  动画执行内容  执行结束后的block方法
            [UIView animateWithDuration:0.5 delay:0 options: UIViewAnimationOptionBeginFromCurrentState animations:^{
            view.frame = CGRectMake(arc4random()%415, arc4random()%737, arc4random()%200,arc4random()%200);
            view.center = CGPointMake(arc4random()%415, arc4random()%737);
            view.backgroundColor = [UIColor colorWithRed:10000/(arc4random()%40000) green:10000/(arc4random()%40000) blue:10000/(arc4random()%10000) alpha:0.8];
        } completion:^(BOOL finished) {
            [self changeView];
        }];

    停靠模式   父视图改变时 子视图的改变

        //设置子视图的停靠模式
        subView.autoresizingMask = UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight;
        
        /*
         typedef NS_OPTIONS(NSUInteger, UIViewAutoresizing) {
         UIViewAutoresizingNone                 = 0,            没有效果
         UIViewAutoresizingFlexibleLeftMargin   = 1 << 0,       自由左编辑 子视图和父视图右边间距不变
         UIViewAutoresizingFlexibleWidth        = 1 << 1,       横向两边间距不变
         UIViewAutoresizingFlexibleRightMargin  = 1 << 2,       自由右编辑
         UIViewAutoresizingFlexibleTopMargin    = 1 << 3,       自由顶编辑 底部间距不变
         UIViewAutoresizingFlexibleHeight       = 1 << 4,       竖向两侧间距不变
         UIViewAutoresizingFlexibleBottomMargin = 1 << 5        顶部间距不变
         };
         */

    关于滑块控件  UISlider

        //创建一个滑块控件
        UISlider * slider = [[UISlider alloc]initWithFrame:CGRectMake(60, 400, 200, 50)];
        //左侧值
        slider.minimumValue = 0;
        //右侧值
        slider.maximumValue = 200;
        
        //设置初始值
        slider.value = 200;
        //添加滑动方法   UIControlEventValueChanged值改变时执行changeValue:方法
        [slider addTarget:self action:@selector(changeValue:) forControlEvents:UIControlEventValueChanged];
  • 相关阅读:
    POJ3061(尺取法)
    POJ2739(尺取法)
    HDOJ4763(KMP原理理解)
    HDOJ5521(巧妙构建完全图)
    UVALive7261(2015ACM/ICPC北京赛区现场赛A)
    POJ1745动态规划
    POJ1273(最大流入门)
    HDOJ5883(欧拉路)
    HDOJ5437(优先队列)
    HDOJ5875(线段树)
  • 原文地址:https://www.cnblogs.com/gwkiOS/p/4979590.html
Copyright © 2020-2023  润新知