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];
原文地址:https://www.cnblogs.com/gwkiOS/p/4979590.html