UIView / UIView的布局
- //! 一个视图可以有n个子视图,但是一个视图只能有一个父视图
- struct CGRect {
CGPoint origin;
CGSize size;
};
{
CGRect rect;
rect.origin.x = x; rect.origin.y = y;
rect.size.width = width; rect.size.height = height;
return rect;
- struct CGPoint {
CGFloat x;
CGFloat y;
}; - struct CGSize {
CGFloat width;
CGFloat height;
};
- /*
快速创建结构体变量的方法
CGRect (位置 大小) ---- CGRectMake();
CGPoint(x, y) ---- CGPointMake();
CGSize(w, h) ---- CGSizeMake();
*/
- // 获取父视图
bView.backgroundColor = [UIColor greenColor];
[self.window addSubview:bView];
[bView release];
// superview的返回值是UIView类型的,而此时bView父视图是UIWindows *类型的,所以要强制转换
UIWindow *findWindow = (UIWindow *)bView.superview;
// 通过superView得到的视图操作bView的父视图
- // 获取self.window上的所有子视图, 父视图得到子视图的数组元素的顺序和子视图添加的顺序一致 (返回值是一个数组)
NSArray *subArray = self.window.subviews;
NSLog(@"%@", subArray);
// 通过得到的管理子视图的数组可以操作视图上的子视图
UIView *aView = self.window.subviews[1];
aView.backgroundColor = [UIColor purpleColor];
aView.alpha = 0.3;
- // 练习3:获取view2的方式 方式不限
// 1 通过子视图数组
UIView *findView = self.window.subviews[2];
NSLog(@"%@", findView);
// 2 通过设置tag值
UIView *tagView2 = [self.window viewWithTag:300];
NSLog(@"%@", tagView2);
// 3 通过另一个子视图间接得到目标子视图
UIView *findView2 = [view1.superview viewWithTag:300];
NSLog(@"%@", findView2);
UIView的常见属性:
1.backgroundColor :视图的背景颜色 颜色通过UIColor类来赋值,默认背景颜色是透明的
2.hidden :显隐性 ,控制视图是显示还是隐藏,BOOL类型,默认是NO不隐藏;
3.alpha :透明度 ,透明度的范围是0.0到1.0之间,默认值是1.0(完全不透明);
4.superView :父视图, 获取当前视图的父视图,一个视图只能有一个父视图
5.subView :子视图, 获取一个视图上所有的子视图,一个视图可以有多个子视图
6.tag :标记 , 设定tag值时一定要设置100以上的数字,作为视图的唯一标示 [ VIP ]
// frame :包含(origin值,指的是视图左上角点的坐标; size指的是视图的大小),主要用来控制一个视图在它父视图上的位置和大小,其中位置是相对于父视图原点在x轴和y轴的距离
// center:中心点,指的就是视图中心位置的坐标,也是相对于父视图的原点位置
// center.x = frame.origin.x + frame.size.wideth / 2
|
1
|
[view1 setBounds:CGRectMake(-30, -30,200,200)]; |
// 修改bounds,影响自身坐标系的原点 (bounds的起始位置在视图的左上角) //修改bounds影响子视图在父视图上的位置
CGRect bounds = redView.bounds;
NSLog(@"%@", NSStringFromCGRect(bounds));
bounds.origin.x = 50;
bounds.origin.y = 50;
1.最后添加的视图肯定在所有视图的最前面
2.子视图永远在父视图的前面
3.子视图的添加是有先后顺序的
4.父视图是通过一个数组管理自身视图上的所有子视图,可以通过下标操作子视图
5.如果想要调整父视图上子视图的层级关系,需要通过父视图来调整
6.如果想从父视图上移除,使用子视图调用方法
[self.window insertSubview:greenView aboveSubview:blueView];
// insertSubview:A atIndex:index 将视图A插入到指定位置index
[self.window insertSubview:redView atIndex:2];
// insertSubview:A belowSubview:B
[self.window insertSubview:redView belowSubview:blueView];
// 调整视图层次关系的其他方法
// 父视图 bringSubviewToFront:B 将视图B调整到所有子视图的最前面
//[self.window bringSubviewToFront:redView];
// sendSubviewToBack:B 将视图B调整到所有子视图的最后面
//[self.window sendSubviewToBack:redView];
// 根据给定的下标交换两个子视图在父视图上的位置
//[self.window exchangeSubviewAtIndex:0 withSubviewAtIndex:1]; // 一个视图只能有一个父视图
// 从父视图上移除子视图,子视图自己走
[blueView removeFromSuperview];
// 定时器
// 1:设置定时器隔多长时间触发一次
// 2:指定由谁来完成定时器方法的操作 self:当前类创建的对象
// 3.选择执行的方法
// 4:用户信息
UIView / UIView的布局的更多相关文章
- 100% opacity UILabel over a 50% opacity background (UIView?) UIView是百分之50透明而上面的UILable是100%不透明
So right now I have a UIView with a UILabel in it. I want the background to have an opacity < 1.0 ...
- iOS - UIView
前言 NS_CLASS_AVAILABLE_IOS(2_0) @interface UIView : UIResponder <NSCoding, UIAppearance, UIAppeara ...
- UIWindow与UIView
UIView与UIWindow * 一般应用程序只有一个UIWindow对象.所有的控件都是在UIWindow上展现的.每个UIView对象都有一个window属性,表示当前view显示在哪个窗体上. ...
- UIView上的控件使用push方法跳转
有时候在项目中,为了保持前后页面的推进方式跳转方式一致,会在通过UIview上的控件跳到另一个Controller上,所以,这时候就需要用到这种方式了,当然,present方法可以实现跳转但是样式可能 ...
- IOS UIView 04- 自定义控件
注:本人是翻译过来,并且加上本人的一点见解. 前言 本文将讨论一些自定义视图.控件的诀窍和技巧.我们先概述一下 UIKit 向我们提供的控件,并介绍一些渲染技巧.随后我们会深入到视图和其所有者之间的通 ...
- iOS-xib(使用XIB自定义一个UIView )
1.新建一个xib视图
- iOS UIView 基本属性用法
.创建UIView UIView * redView = [[UIView alloc] initWithFrame:CGRectMake(, , , )]; UIView * blueView = ...
- 加深理解UIView,UIResponder,UIController
转载出处:http://www.th7.cn/Program/IOS/201503/406514.shtml 原文地址==>自定义控件:http://objccn.io/issue-3-4/ 读 ...
- ##DAY1 UI、frame、center、bounds、UIVIew
##DAY1 UI.frame.center.bounds.UIVIew #pragma mark ———————UI——————————— UI的本意是用户界面,是英文User和 Interface ...
随机推荐
- (六)backbone - API学习 - Backbone路由
Backbone路由本质 Backbone路由分为两个大块,Router以及History用户在Router中定义相关规则,然后开启history.start进行路由监控,执行默认的回调所以,Rout ...
- 一个简单C程序的汇编代码分析
几个重要的寄存器 eip - 用于存放当前所执行的指令地址 esp - 栈(顶)指针寄存器 ebp - 基址(栈底)指针寄存器 简单的C程序 int g(int x) { ; } int f(int ...
- uva 10125 - Sumsets
题意: 输入n,然后输入n个数字,,要在这n个数字中找出a,b,c,d..满足a,b,c,d是不同元素,并且a + b + c = d...求出最大的d 直接暴力时间复杂度为O(n^4)..会超时.. ...
- UVa 10098: Generating Fast
这道题要求按字典序生成字符串的全排列,不可重复(但字符可以重复,且区分大小写). 基本思路是先对输入的字符串按字典序排序,然后从第一位开始递归,从所有输入的字符中选出一个填充,然后再选第二位..... ...
- 3月25日html(六) Javascrip
第1部分 JavaScript简介 1.JavaScript它是个什么东西? 它是个脚本语言,需要有宿主文件,他的宿主文件是html文件. 2.它与J ...
- JQ点击列表显示隐藏
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 使用Keil软件编写汇编源程序应注意事项
1)一定要使用微软的txt文本编辑器,否则键入逗号时编译通不过.应该是这个样('),不该是这个样(,). 2) 用数字做标号时,前面一定要加一个英文字母,否则编译通不过. 3) 有时编译通过的.asm ...
- 多线程操作UI界面的示例 - 更新进度条
http://blog.csdn.net/liang19890820/article/details/52186626
- phpmyadmin导入大量数据比较快的做法
在一次项目在其他机器上配置的时候,将数据库以.sql的形式导出后,在新的机器上想将数据重新导入phpmyadmin的时候.按照以前的在数据库中将所有数据复制过来然后点击sql运行给卡住了(数据量过大) ...
- 40 个超棒的免费 Bootstrap HTML5 网站模板
Bootstrap 是快速开发Web应用程序的前端工具包.它是一个CSS和HTML的集合,它使用了最新的浏览器技术,给你的Web开发提供了时尚的版式,表单,buttons,表格,网格系统等等. 目前 ...