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
5. UIView的更多相关文章
- UIView的layoutSubviews和drawRect方法何时调用
首先两个方法都是异步执行.layoutSubviews方便数据计算,drawRect方便视图重绘. layoutSubviews在以下情况下会被调用: 1.init初始化不会触发layoutSubvi ...
- iOS 自定义方法 - UIView扩展
示例代码 //#import <UIKit/UIKit.h>@interface UIView (LPCView)/** 上 */@property CGFloat top;/** 下 * ...
- UIView上的控件使用push方法跳转
有时候在项目中,为了保持前后页面的推进方式跳转方式一致,会在通过UIview上的控件跳到另一个Controller上,所以,这时候就需要用到这种方式了,当然,present方法可以实现跳转但是样式可能 ...
- IOS 杂笔-11(实现在外部无法改变UIView的size)
我想题目说的或许不是很清楚,那么现在我详细介绍一下这篇随笔内容. 在外部无法改变UIVIew控件的size. 这里说是UIView,但是事实上,是大多数控件而绝非仅UIView. 想要实现在外部无法改 ...
- iOS系列 基础篇 05 视图鼻祖 - UIView
iOS系列 基础篇 05 视图鼻祖 - UIView 目录: UIView“家族” 应用界面的构建层次 视图分类 最后 在Cocoa和Cocoa Touch框架中,“根”类时NSObject类.同样, ...
- Swift - UIView,UItableView,Cell设置边框方法
// 设置边框的宽度 cell.layer.borderWidth = 1 // 设置边框的颜色 cell.layer.borderColor = UIColor.blackColor().CGCol ...
- iOS 使点击事件穿透透明的UIView
如图: 悬浮的三个按钮下方有一个可以点击的灰色区域,但是点击按钮之间的透明区域, 这三个按钮的contentView会响应这个点击事件,这时候需要让这个contentView不响应这个点击事件. 解决 ...
- iOS----自定义UIView,绘制一个UIView
绘制一个UIVIew最灵活的方式就是由它自己完成绘制.实际上你不是绘制一个UIView,你只是子类化了UIView并赋予子类绘制自己的能力.当一个UIVIew需要执行绘图操作的时,drawRect:方 ...
- UIView的几个layout方法
iOS layout的相关方法: 1,layoutSubviews 2,layoutIfNeeded 3,setNeedsLayout 4,setNeedsDisplay 5,drawRect 6,s ...
随机推荐
- 在mysql 查询语句中将时间戳格式转化为年月日格式
SELECT FROM_UNIXTIME('时间戳的字段名称', '%Y-%m-%d %H:%i:%s') FROM `表名` http://www.cnblogs.com/tdalcn/arc ...
- JS this指向
正常模式 在正常模式下独立函数的的 this 指向 undefined 或 window. <script type="text/javascript"> functi ...
- PHP进程通信基础——信号
PHP进程通信基础--信号 使用信号通信.可以使用kill -l 来查看当前系统的信号类型. 每个信号所代表的的详细含义,请查看我的这篇博客:http://www.cnblogs.com/roverl ...
- 在windows下使用linux命令,GnuWin32的使用.
http://sourceforge.net/projects/getgnuwin32 使用过linxu的伙计估计都会喜欢上linux各种各样强大的命令如:grep, sed,awk,diff和pat ...
- Day5-python基础之函数(二)
生成器 迭代器 装饰器 模块 来个需求,一个列表中所有元素都+1 1.最容易想到的方法 for循环,找列表索引,对应每个值+1 list_old = [1,2,3,4,5,6,7,8,9] for ...
- vim删除以#,空格开头的行
1,删除以#号开头的行: :g/^#/d :%s/^#.*\n 2,删除以空格开头的行: :g/^\s/d “\s代表空格” :%s/^\s.*\n 3,删除以空格#开头 ...
- [Java] JSP笔记 - Listener 监听器
Java Web 开发时,可以使用 Listener 来监听来监听一些事件,从而实现一些功能.实际上这个监听器,原理就是 Delphi 中大家常用的各种事件. 1. 那么,监听器的主要用途用哪些呢: ...
- 安装出现了error launching installer
安装geany时,出现问题: 两种解决方法: 解决的办法是: 在控制面板中寻找"区域.语言设置"--管理--更改系统区域设置--中文(简体.中国),确定退出即可! 但是....我不 ...
- linux查看端口占用情况
今天要使用python写一个端口探测的小程序,以检测一些特定的服务端口有没有被占用,突然发现自己居然不知道在linux中如何查询端口被占用的情况,天呐,赶快学习一下.
- CJCMS系列--demo代码篇
CJCMS之前写了不多的文章,但是一直没有上代码,也许代码写得很乱很差,但是我觉得总得有个开始,持续改进.作为一个喜欢分享的程序员,我决定分享一下. 前面文章中的结构比较全,而此次我给出的demo,没 ...