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

5. UIView的更多相关文章

  1. UIView的layoutSubviews和drawRect方法何时调用

    首先两个方法都是异步执行.layoutSubviews方便数据计算,drawRect方便视图重绘. layoutSubviews在以下情况下会被调用: 1.init初始化不会触发layoutSubvi ...

  2. iOS 自定义方法 - UIView扩展

    示例代码 //#import <UIKit/UIKit.h>@interface UIView (LPCView)/** 上 */@property CGFloat top;/** 下 * ...

  3. UIView上的控件使用push方法跳转

    有时候在项目中,为了保持前后页面的推进方式跳转方式一致,会在通过UIview上的控件跳到另一个Controller上,所以,这时候就需要用到这种方式了,当然,present方法可以实现跳转但是样式可能 ...

  4. IOS 杂笔-11(实现在外部无法改变UIView的size)

    我想题目说的或许不是很清楚,那么现在我详细介绍一下这篇随笔内容. 在外部无法改变UIVIew控件的size. 这里说是UIView,但是事实上,是大多数控件而绝非仅UIView. 想要实现在外部无法改 ...

  5. iOS系列 基础篇 05 视图鼻祖 - UIView

    iOS系列 基础篇 05 视图鼻祖 - UIView 目录: UIView“家族” 应用界面的构建层次 视图分类 最后 在Cocoa和Cocoa Touch框架中,“根”类时NSObject类.同样, ...

  6. Swift - UIView,UItableView,Cell设置边框方法

    // 设置边框的宽度 cell.layer.borderWidth = 1 // 设置边框的颜色 cell.layer.borderColor = UIColor.blackColor().CGCol ...

  7. iOS 使点击事件穿透透明的UIView

    如图: 悬浮的三个按钮下方有一个可以点击的灰色区域,但是点击按钮之间的透明区域, 这三个按钮的contentView会响应这个点击事件,这时候需要让这个contentView不响应这个点击事件. 解决 ...

  8. iOS----自定义UIView,绘制一个UIView

    绘制一个UIVIew最灵活的方式就是由它自己完成绘制.实际上你不是绘制一个UIView,你只是子类化了UIView并赋予子类绘制自己的能力.当一个UIVIew需要执行绘图操作的时,drawRect:方 ...

  9. UIView的几个layout方法

    iOS layout的相关方法: 1,layoutSubviews 2,layoutIfNeeded 3,setNeedsLayout 4,setNeedsDisplay 5,drawRect 6,s ...

随机推荐

  1. UOJ58 【WC2013】糖果公园

    本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...

  2. [UWP] 使用SemanticZoom控件

    在写一个看新闻软件的时候,用到了SemanticZoom控件,遇到了一些问题,比如如何根据首字母分类,以及放大视图中有数据的和没数据的通过背景色或前景色区分,幸运的是,all solved. 先来个效 ...

  3. Spring Boot整合Dubbo框架demo

    Dubbo框架原理见之前的博文:http://www.cnblogs.com/umgsai/p/5836925.html 首先启动zookeeper Server端 Pom配置如下 <?xml ...

  4. 用R去做文本处理

    数据说明 这是一份爬好的数据,data.frame格式.包括一些招聘信息,具体的列名和含义如下所示: 职位名称(occ_name)清洗 预览 清洗策略 需要去除无关的信息,比如符号以及数字信息 实现 ...

  5. 【学习笔记】Struts2 应用开发步骤

    1.在web.xml文件中定义核心Filter来拦截用户请求. <!-- 定义Struts 2的核心Filter --> <filter> <filter-name> ...

  6. 【学习笔记】load-on-startup Servlet

    创建Servlet实例有两个时机:用户请求之时和应用启动之时.应用启动之时创建的通常用于某些后台服务的Servlet.配置load-on-startup的Servlet有两种方式: 在web.xml文 ...

  7. Android基础 : Android ContentProvider

    Android 应用程序通过ContentProvider实现方式统一的数据共享功能. 外界的程序通过ContentResolver接口可以访问ContentProvider提供的数据,在Activi ...

  8. Toad各版本所包含的组件

    Toad for Oracle Base Edition Toad for Oracle Knowledge Xpert for PL/SQL Knowledge Xpert for Oracle A ...

  9. axios基本用法

    vue更新到2.0之后,作者就宣告不再对vue-resource更新,而是推荐的axios,前一段时间用了一下,现在说一下它的基本用法. 首先就是引入axios,如果你使用es6,只需要安装axios ...

  10. VB中PictureBox控件使用教程

    PictureBox对象可以说是任何对象的原始型态,它可以加载图片.显示文字.画图外,它还能与Frame对象一样,在自己本身里头加载其它的对象而自成一个小群组,用PictureBox可以仿真出任何对象 ...