文档章节

UIView的用法

我是IT码农
 我是IT码农
发布于 2015/10/15 17:51
字数 1143
阅读 216
收藏 6

行业解决方案、产品招募中!想赚钱就来传!>>>

1.创建UIView

     UIView * redView = [[UIView alloc] initWithFrame:CGRectMake(10, 100, 200, 100)];

     UIView * blueView = [[UIView alloc] init];

      把blueView粘贴到了redView上

    [redView addSubview:blueView];

          redView 就是blueView 的父视图

       修改父视图属性 对子视图产生影响

 

2.设置隐藏

    redView.hidden = YES;//父视图隐藏子视图也会隐藏

 

3.如果子视图超出父视图范围是否裁剪子视图  默认是NO

    redView.clipsToBounds = YES;

 

4.是否可以和用户进行交互,默认为YES

    redView.userInteractionEnabled = YES;

    UIView 默认 YES

    /*

     如果可一个用户交互那么这个视图 可以接收点击,子视图也可以接收点击事件

     谁在在上方谁想接受点击 最上方的会拦截

     如果设置为NO 子视图和父视图都不能接受点击事件,那么这个点击就会向下层传递知道能被接受事件的控件接收 如果最后没有控件接受这个事件 事件将会被抛弃

        UILabel UIIImageView userInteractionEnabled默认是NO,不可以和用户进行交互

        如果button 粘贴到UILabel 和UIIImageView上 button是不能被点击

        如果想要能点击button 就要把UILabel 和 UIIImageView 的userInteractionEnabled改为YES

     */

 

5.确定父子视图关系之后我们就可以获取所有的子视图

    NSArray * subViews = redView.subviews;

 

6.获取子视图的父视图

    UIView * superView = blueView.superview;

 

7.判断一个视图是否是另外一个视图的子视图

    [button isDescendantOfView:redView];

 

8.在指定的索引位置插入一个子视图(这个函数也会把子视图粘贴到父视图上)

            如果指定的索引超出了 父视图对应的索引值 那么就会把这个子视图插在 最上层

        索引0 对应的就是最底层

    [self.view insertSubview:label4 atIndex:10];

 

9.在指定的某个子视图下方插入一个新的子视图

    [self.view insertSubview:label4 belowSubview:label1];

     

10.在指定的某个子视图上方插入一个新的子视图

    [self.view insertSubview:label4 aboveSubview:label1];

11.父视图 把指定的子视图 放到最前方

    [self.view bringSubviewToFront:label4];

 

12.父视图 把指定的两个视图进行交换

    [self.view exchangeSubviewAtIndex:0 withSubviewAtIndex:2];

 

13.父视图 把指定的子视图放到最底层

    [self.view sendSubviewToBack:label4];

 

14.可以通过设置中心点位置

    blueView.center = CGPointMake(100, 100);

 

15.通过bounds 改变 视图的边框大小

    blueView.bounds = CGRectMake(0, 0, 100, 100);

    //bounds 前两项一般是 0 0

    frame 和 bounds 区别

     1.frame 子视图相对于父视图的坐标系的坐标

     2.bounds 前两项的坐标是相对于自己坐标系的坐标

     3.如果把bounds 中的坐标改变了 那么就会影响自己的坐标系,那么最终能影响子视图

 

16.修改view的bounds会将redView的坐标系改变

    redView.bounds = CGRectMake(-50, -50, 200, 100);

 

17.view.transform

      1.CGAffineTransformMakeRotation 设置视图的旋转角度(这个角度相对最原始的位置)

     imagebutton.transform = CGAffineTransformMakeRotation(M_PI/4);            

          2.CGAffineTransformRotate函数相对于当前imagebutton.transform 旋转的角度

    imagebutton.transform = CGAffineTransformRotate(imagebutton.transform, M_PI/4);

  

18.CGAffineTransformMakeScale可以实现 放大 缩小 上下翻转 左右翻转

          都是相对最原始的状态进行变换

             CGAffineTransformMakeScale(x, y);

             x 控制x 方向的大小  1 原始大小 >1 x方向放大  <1 缩小

             y 控制 y方向 大小   1  原始大小 >1 y纵向放大  < 1缩小             

             x 是负数 表示相对于原始的位置 左右翻转 翻转180度

             x 是正数    原始的位置             

             y 负数  相对于原始的位置  上下翻转

             y 正数 就是最原始的位置

     imagebutton.transform = CGAffineTransformMakeScale(-2, 2);

 

19.动画

    [UIView animateWithDuration:0.25 animations:^{//执行的第一个动画

    } completion:^(BOOL finished) {//第一个动画结束时执行

    }]

 

20.设置父子视图自适应/停靠模式

    _redView.autoresizesSubviews = YES;//允许子视图伴随父视图自动变化

 

21.设置子视图的自适应模式

    blueView.autoresizingMask = UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight|UIViewAutoresizingFlexibleLeftMargin|UIViewAutoresizingFlexibleRightMargin|UIViewAutoresizingFlexibleTopMargin|UIViewAutoresizingFlexibleBottomMargin;

    /*

     UIViewAutoresizingFlexibleLeftMargin   = 1 << 0,

     父子视图的左边距 会伴随父视图的宽度 增加而增加 减少而减少

     UIViewAutoresizingFlexibleWidth        = 1 << 1,

     //子视图的宽度会伴随父视图的宽度增加而增减 减少而减少

     UIViewAutoresizingFlexibleRightMargin  = 1 << 2,

     父子视图的右边距 会伴随父视图的宽度 增加而增加 减少而减少

     UIViewAutoresizingFlexibleTopMargin    = 1 << 3,

     父子视图的上边距 会伴随父视图的宽度 增加而增加 减少而减少

     UIViewAutoresizingFlexibleHeight       = 1 << 4,

     //子视图的高度会伴随父视图的高度增加而增减 减少而减少

     UIViewAutoresizingFlexibleBottomMargin = 1 << 5

     父子视图的下边距 会伴随父视图的宽度 增加而增加 减少而减少

     */

我是IT码农
粉丝 6
博文 66
码字总数 29699
作品 0
成都
程序员
私信 提问
加载中
此博客有 1 条评论,请先登录后再查看。
词典软件--DictForGeeks

DictForGeeks是个人写的一款词典软件,支持高度自定义。个人在学习过程中,发现很多科技词汇的意思跟主流的词义很不一样就想写一款可以自己定义词义的词典,支持添加和查询功能。至少要比txt...

卓尔
2013/03/30
1K
0
超快的css selector引擎--kquery 2.0

kquery是一款基于javascript完整实现css3选择器引擎. 兼容所有主流浏览器ie6+/chrome/firefox/opera/safari, 压缩和gzip之后仅8kb大小。智能编译引擎优化去除不必要的逻辑, 查询速度远胜于...

aaron.xiao
2012/10/23
666
0
CUSLayout

CUSLayout为iOS下提供托管定位机制。系统提供的绝对定位方式极不方便使用,另外iPhone的4寸屏幕的出现和iPad令iOS开发者在布局需要花更多的时间,然而iOS6.0提供的AutoLayout机制令人失望,所...

JJMM
2013/05/03
656
0
Filter View

实现高度自定义的tab bar。可以自定义每个tab的颜色、文字、背景图片等等,并且可以滑动选择不同的tab,也可以滚动视图时隐藏tab bar。这份代码实现的是tab bar控件,但不是UITabBar的扩展,...

匿名
2013/05/23
1.4K
0
PocketSVG

直接根据SVG生成CGPath/UIBezierPath。 使用场景: 1. 重写UIView的时候,直接从SVG文件获取CGPath进行绘制。 2. 替代庞大的png/jpg等图形文件,节约空间和内存。 3. 可以任意改写图形的Str...

匿名
2013/05/29
1.2K
0

没有更多内容

加载失败,请刷新页面

加载更多

【重讲拉勾】5 MySQL索引失效

文章内容输出来源:拉勾教育Java高薪训练营 【重讲拉勾】1 JVM内存结构 https://my.oschina.net/u/4033707/blog/4444869 【重讲拉勾】2 Java容器 https://my.oschina.net/u/4033707/blog/44...

不正经的大叔
36分钟前
28
0
每个程序员应阅读的最具影响力的单一书籍是什么? [关闭]

问题: If you could go back in time and tell yourself to read a specific book at the beginning of your career as a developer, which book would it be? 如果你可以回到过去并告诉自己......

技术盛宴
52分钟前
5
0
Spring Cloud系列之微服务介绍

相信我,请认真读完,点开每一个链接,或许你才能真正了解什么是微服务?什么是分布式?什么是云计算?绝对没有多余! 1 微服务 微服务架构是“新常态”。构建小型的、自包含的、随时可以运行...

冯文议
今天
6
0
在Visual Studio中使用Git [关闭] - Using Git with Visual Studio [closed]

问题: As a long-time Visual SourceSafe user (and hater) I was discussing switching to SVN with a colleague; 作为一个长期的Visual SourceSafe用户(和仇恨)我正在讨论与同事转换到S......

富含淀粉
今天
26
0
第三讲:毕业论文(设计)开题报告

本讲讲解开题报告的设计。 一、字体与格式 参看第二讲的内容,这里不再赘述。 二、头部信息 如下图所示,样式不要有太多的差异化。 三、选题的背景与意义 2.1背景 选题背景即阐述做这件事情(...

刘日辉
今天
262
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部