UIView的层次调整,及子view布局模式自动布局模式(停靠模式)

UIView*view1=[[UIView alloc]initWithFrame:CGRectMake(10,30,300,30)];

view1.backgroundColor=[UIColor redColor];

[self.window addSubview:view1];

[view1 release];

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

view2.frame=CGRectMake(30,20,50,100);

view2.backgroundColor=[UIColor blueColor];

[self.window addSubview:view2];

[view2 release];

UIView*view3=[[UIView alloc]initWithFrame:CGRectMake(20,50,200,200)];

view3.backgroundColor=[UIColor yellowColor];

[self.window addSubview:view3];

//把某一个view放到最下层

[self.window sendSubviewToBack:view2];

//把某一个view放到最上层

[self.window bringSubviewToFront:view2];

//把某一个view加入到指定层

[self.window insertSubview:view2 atIndex:1];

//把某一个view加入到某层的下面

[self.window insertSubview:view2 belowSubview:view1];

//把某一个view加入到某层的上面

[self.window insertSubview:view2 aboveSubview:view1];

//交换两个层的view

[self.window exchangeSubviewAtIndex:0 withSubviewAtIndex:1];

//自动布局模式(停靠模式)

//前面把_backgroundView设置成了成员变量,为了方便,没有写出来

_backgroundView=[[UIView alloc]initWithFrame:CGRectMake(110,300,100,100)];

_backgroundView.background=[UIColor blackColor];

//设置父view允许子view自动布局

_backgroundView.autoresizesSubviews=YES;

[self.window addSubview:_backgroundView];

UIView*topView=[[UIView alloc]initWithFrame:CGRectMake(25,25,50,50)];

topView.backgroundColor=[UIColor orangeColor];

//设置子view的自动布局模式

//下面设置会让topView跟着_backgroundView变化而变化,中心点不变

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

[_backgroundView addSubview:topView];

//创建一个按钮,点一下,_backgroundView会变大

UIButton*btn=[UIButton buttonWithType:UIButtonTypeRoundedRect];

btn.frame=CGRectMake(10,230,300,20);

[btn addTarget:self action:@selector(click) forControlEvents:UIControlEventTouchUpInside];

[self.window addSubview:btn];

-(void)click

{

_backgroundView.frame=CGRectMake(_backgroundView.frame.origin.x-2,_backgroundView.frame.orgin.y-2,_backgroundView.frame.size.width+4,_backgroundView.frame.height+4);

}

时间: 2024-10-21 11:46:25

UIView的层次调整,及子view布局模式自动布局模式(停靠模式)的相关文章

UIView 设置alpha后, 子view也随着变化alpha, 解决方法

//        _closeContainerBar.alpha = 0.7; [_closeContainerBar setBackgroundColor:[[UIColor blackColor] colorWithAlphaComponent:0.7]]; UIView 设置alpha后, 子view也随着变化alpha, 解决方法

IOS UIView 03- 自定义 Collection View 布局

注:本人是翻译过来,并且加上本人的一点见解. 前言 UICollectionView 在 iOS6 中第一次被引入,也是 UIKit 视图类中的一颗新星.它和 UITableView 共享一套 API 设计,但也在 UITableView 上做了一些扩展.UICollectionView 最强大.同时显著超出 UITableView 的特色就是其完全灵活的布局结构.在这篇文章中,我们将会实现一个相当复杂的自定义 collection view 布局,并且顺便讨论一下这个类设计的重要部分.项目的示

android XML布局和子View按比例布局

首先按照程序的目录结构大致分析: res/layout/ 这个目录存放的就是布局用的xml文件,一般默认为main.xml res/values/ 这个目录存放的是一堆常量的xml文件 res/drawable/ 存放的是一些图片什么的,当然图标也在这里 下面主要对layout下的xml文件做个介绍,顺便也把布局的方法总结一下: ·文件的开头 <?xml version="1.0" encoding="utf-8"?> 这是在说明xml版本及字符编码 ·

android:clipChildren属性的分析——是否剪裁子View

MainActivity如下: package cc.testclipchildren; import android.os.Bundle; import android.app.Activity; /** * android:clipChildren属性的分析 * 该属性默认值为android:clipChildren="true" * 单从字面意思理解clipChildren的意思是:裁剪(缩短)孩子 * 我们将其值设置为false后那么当子控件的高度高于父控件时 * 也会完全显示

Android中如何将子View的坐标转换为父View的坐标

最近打算照着Android的Launcher2源码写一个精简的带有拖动功能的Launcher.在分析DragLayer类的时候发现了一个有趣方法——getDescendantCoordRelativeToSelf.通过一下两篇文章的介绍和自己的实验,总算是弄清楚了该方法的原理. http://blog.csdn.net/hahajluzxb/article/details/8165258 http://www.cnblogs.com/platte/p/3534279.html 下面主要分析一下代

LinearLayout的gravity属性以及其子元素的layout_gravity何时有效;RelativeLayout如何调整其子元素位置只能用子元素中的属性来控制,用RelativeLayout中的gravity无法控制!!!

LinearLayout的gravity属性以及其子元素的layout_gravity何时有效 转自:http://www.cnblogs.com/xiaoran1129/archive/2013/03/26/2982733.html 相信对于Android的初学者来说,大家都曾经被layout里这两个极其相似的属性迷惑过. 简单使用一下搜索工具,我们就不难找到下面这样的答案: layout_gravity 表示组件自身在父组件中的位置 gravity             表示组件的子组件在

Android中父View和子view的点击事件的执行过程

Android中的事件类型分为按键事件和屏幕触摸事件,Touch事件是屏幕触摸事件的基础事件,有必要对它进行深入的了解. 一个最简单的屏幕触摸动作触发了一系列Touch事件:ACTION_DOWN->ACTION_MOVE->ACTION_MOVE->ACTION_MOVE...->ACTION_MOVE->ACTION_UP 当屏幕中包含一个ViewGroup,而这个ViewGroup又包含一个子view,这个时候android系统如何处理Touch事件呢?到底是ViewG

Android View框架总结(六)View布局流程之Draw过程

转载请注明出处:http://blog.csdn.net/hejjunlin/article/details/52236145 View的Draw时序图 ViewRootImpl.performTraversals过程 ViewRootImpl.performDraw过程 View.draw方法 View.dispatchDraw过程 LinearLayout的onDraw过程 View的Draw时序图 前面几篇通过对View树的measure和layout过程分析事,接下来将结合前两步得到的测

Android FrameLayout子view居中(左居中,右居中)等

Android的布局FrameLayout默认是把布局内的子view堆砌在左上角,但是,可以通过设置子view的: android:layout_gravity 此参数控制子view的布局位置,实现FrameLayout的各种子view布局位置,如左居中,右居中,居中等等,要点在android:layout_gravity的参数设置中组合使用"center"."left"."right"等,现在给出XML代码实例布局: <FrameLayo