• 5. UIView


    1. UIView 的初认识

    官方文档 UIView class defines a rectangular area on the screen and the interfaces for managing the content in that area.At runtime, a view object handles the rendering of any content in its area and also handles any interactions with that content.UIView在屏幕上定义了一个矩形区域和管理区域内容的接口。在运行时,一个视图对象控制该区域的渲染,同时也控制内容的交互。)UIView就相当于一块白墙,这块白墙只是负责把加入到里面的东西显示出来而已。

    也可以说UIView表示屏幕上的一块矩形区域,它在App中占有绝对重要的地位,因为IOS中几乎所有可视化控件都是UIView的子类。负责渲染区域的内容,并且响应该区域内发生的触摸事件,可以这么说在iphone里你看到的,摸到的,都是UIView。所以UIView 在iOS开发中拥有很重要的地位

    2. UIView 的使用

    2.1 基本使用方法

    UIView *viewOne = [[UIView alloc] initWithFrame:CGRectMake(100, 100, 100, 100)];

    // 设置背景颜色

    viewOne.backgroundColor = [UIColor redColor];

    // 设置view 中心的位置

    viewOne.center = CGPointMake(200, 200);

    // 设置透明度(如果父视图的透明度改变了,所有子视图都改变)

     viewOne.alpha = 0.5;

    // 隐藏,如果父视图隐藏,那么子视图也会隐藏(隐藏和透明度设置成0 效果一样,但是隐藏类似于移除(但是并没有删除),透明度设置成0 控件还是存在,只是我们看不到)

     view.hidden = YES;

    // 切掉子视图超出的部分,也就是如果一个视图超出了他所添加在的UIView,那么超出的部分就会被切除

     viewOne.clipsToBounds = YES;

    // 把子视图从父视图上移除

      [subView1 removeFromSuperview];

    // 禁止视图接受事件(父视图不能接受 子视图同样不能)

      superView.userInteractionEnabled = YES;

    // 获取父视图

     UIView *view = subView1.superview;

     // 获取子视图(可以遍历子视图数组,取出你想获取的视图)

        NSArray *array = superView.subviews;

    // 如果子视图中有这个tag的视图,直接取出。 如果没有就会深度遍历子视图的子视图去找这个tag的子视图,如果还是没有 返回nil

        UIView *sView = [superView viewWithTag:11];

    // 鉴定父子关系

        // isDescendantOfView 判断一个视图是不是另一个视图的直接或间接的子视图

        BOOL boo = [subView1 isDescendantOfView:superView];

         // 拓展方法

    • //将一个视图移到前面  
    • bringSubviewToFront:  
    • //将一个视图推送到背后  
    • sendSubviewToBack:  
    • //把视图移除  
    • removeFromSuperview  
    • //插入视图 并指定索引  
    • insertSubview:atIndex:  
    • //插入视图在某个视图之上  
    • insertSubview:aboveSubview:  
    • //插入视图在某个视图之下  
    • insertSubview:belowSubview:  
    • //交换两个位置索引的视图  
    • exchangeSubviewAtIndex:withSubviewAtIndex:

    2.2 仿射变换

    // 1. view 旋转(顺时针旋转多少度)

     view.transform = CGAffineTransformMakeRotation(M_PI / 3);

     // 2. view 变形(参数一作用:宽 * 比例  参数一作用:高 * 比例)(中心点不变)

     view.transform = CGAffineTransformMakeScale(1, 2);

      // 3. 平移(1. 平移目标 2.在水平方向平移多少(正值 右移  负值 左移)3.在垂直方向平移多少(正值 下移  负值 上移))

     view.transform = CGAffineTransformTranslate(view.transform, - 100, 0);

        

    2.3 动画

    // 参数1:动画时间 animations block:在这个时间要完成的动画

        [UIView animateWithDuration:1.0 animations:^{

            CGRect frame = _view.frame;

            frame.origin.y += 200;

            _view.frame = frame;

        }];

        

        // 参数1:动画时间 animations block:在这个时间要完成的动画 completion block:这个动画执行完成之后要做什么操作

        [UIView animateWithDuration:2.0 animations:^{

            CGRect frame = _view.frame;

            frame.origin.y += 200;

            _view.frame = frame;

            _view.alpha = 0;

            

        } completion:^(BOOL finished) {

            [UIView animateWithDuration:2.0 animations:^{

                CGRect frame = _view.frame;

                frame.origin.y -= 200;

                _view.frame = frame;

                _view.alpha = 1;

            }];

        }];

    一个UIView动画的简单Demo https://github.com/mcj122755/UIViewDemo5.git

  • 相关阅读:
    电子公文传输系统个人贡献
    第十三章学习笔记
    第十二章学习笔记
    第14章学习笔记
    团队作业(五):冲刺总结
    冲刺总结(day7)
    thread同步测试
    冲刺总结(day1)
    元宇宙、VR(Unity3D、Unreal4)、AR、WPF&H5外包团队—北京动点飞扬软件新办公室照片
    kanzi外包团队:长年承接kanzi项目应用开发 Kanzi 3.6 LTS已经更新至3.6.3版!
  • 原文地址:https://www.cnblogs.com/mcj-coding/p/5107447.html
Copyright © 2020-2023  润新知