IOS开发-UI基础-视图
//------------------------------UIWindow--------------------------//
1、UIWindow:是 UIView 的子类,用于管理、协调应用中显示的窗口 它是视图中的根view
iOS 应用程序通常只有一个UIWindow,应用程序在启动时创建这个UIWindow,并往窗口中加入一或多个视图,然后将它显示出来,UIWindow的大小是根据设备的大小创建的,如果超出设备大小,那超出部分不会被显示,也不能对超的视图的事件进行操作(旋转、点击等)
(UIWindow 好比是面墙,这面墙的大小是根据这个房间的大小决定的,如果你UIWindow这面墙 超过了房间大小,你在超出房间范围的墙面 贴上你的照片,你在屋里是看不到你贴的照片的 你也不可以在屋里 把屋外墙上贴的照片 摘下来)
UIWindow主要作用:
1、他是个容器,给 view 提供展示的区域;
2、将事件(如:旋转、点击等)分发给 view
UIWindow的主要属性:
1、keyWindow :(@property(nonatomic,readonly,getter=isKeyWindow) BOOL keyWindow;) BOOL类型,只读,判断是否是当前应用的keywindow (keywindow 是指可接收到键盘输入及其他非触摸事件的UIWindow,只能有一个keywindow)2、rootViewController:UIViewController (视图控制器)类型,给UIWindow添加一个根视图控制器
//----------------------------UIView------------------------------//
1、UIView:UIView是视图,代表屏幕上的一个矩形区域。各种UI控件都属于view,不同的控件属于不同种类的视图,iOS中所有能看到的内容都是UIView或其子类。
2、创建一个视图:初始化视图并给他一个坐标,把这个视图添加到你需要显示的图层上
frame:CGRect类型 就是坐标,是在要添加的视图上的位置和自身的大小。他是一个结构体,这个结构体里面有origin起点位置(在2D中确定一个位置,可以用两个点来确定(如X轴Y轴中的(10,20))),还有size自身的大小,有起点位置了,再设置他的重点位置,就可以得到他的大小
struct CGRect {//定义了一个叫做CGRect的结构体,里面包含叫CGPoint类型的origin(X、Y起点到原点的距离)和一个叫CGSize类型的size(视图的大小)
CGPoint origin;
CGSize size;
};
typedef struct CGRect CGRect;//表示struct CGRect和CGRect是同一个东西
视图的层级关系:1、如果两个视图坐标一样 先添加的视图,会被后添加的视图覆盖住
center:CGPoint类型 相对于父视图来说的,视图在父视图坐标系统中的中心点。
bounds:指的是视图在视图本身的坐标系统中的大小(位置起点是原点(0,0,视图的宽,视图的高))。
//center的计算方法:
// center.x = frame.origin.x - frame.size.width/2;
// center.y = frame.origin.x - frame.size.width/2;
//-------------------------视图层次关系的调整------------------------//
在实际开发项目的时候,可能会遇到需要把某个视图 移到最底层,或者移到最上层 等操作 ,我们就用到本节课所讲的层次关系的调整
主要用到的方法:
addSubview:添加一个子视图到接收者 并让它在最上面显示出来
bringSubviewToFront:把指定的子视图移动到顶层
sendSubviewToBack:移动指定的子视图到它相邻视图的後面
removeFromSuperview:移除视图
代码实现:
//我们往同一个父视图上面添加子视图的时候, 系统会自动帮我们 记录一个index 只要添加一个子视图 就会增加1.从0开始。
// removeFromSuperview 从父视图移除视图
// [gview removeFromSuperview];
// 总结:子视图依赖于父视图, 如果父视图位置发生改变 子视图位置也会发生改变
// 因为frame是根据它的父视图来定义位置信息的
// 如果移除父视图 父视图上面上面的子视图也会被移除
//---------------视图中心点-------------------
// center 中心点
// 相对于它父视图来说的,改变父视图的中心点
// X = 宽/2;Y = 高/2;
// -------------三种种方式获取中心点------------------
//第一种:
// view.center = CGPointMake([UIScreen mainScreen].bounds.size.width/2, [UIScreen mainScreen].bounds.size.height/2);
//第二种:
// view.center =CGPointMake(CGRectGetWidth([UIScreen mainScreen].bounds)/2, CGRectGetHeight([UIScreen mainScreen].bounds)/2);
//第三种:
// 父视图真正的中心点
view.center = self.window.center;
IOS开发-UI基础-视图的更多相关文章
- iOS开发UI基础—手写控件,frame,center和bounds属性
iOS开发UI基础—手写控件,frame,center和bounds属性 一.手写控件 1.手写控件的步骤 (1)使用相应的控件类创建控件对象 (2)设置该控件的各种属性 (3)添加控件到视图中 (4 ...
- IOS开发UI基础--数据刷新
IOS开发UI基础--数据刷新 cell的数据刷新包括下面几个方面 加入数据 删除数据 更改数据 全局刷新方法(最经常使用) [self.tableView reloadData]; // 屏幕上的全 ...
- iOS开发-UI基础Demo
现在更多的学习资料都是xCode4.X的,发现xCode6.1还是很多东西,如果有正在学习iOS开发的可以通过Demo简单了解下iOS的UI开发~ 1.新建单视图文件: 2.新建项目名称,语言选择OC ...
- iOS开发——UI基础-控制器,IBAction和IBOutlet,UIView
第一个ios程序 @interface ViewController : UIViewController @property(nonatomic, weak)IBOutlet UILabel *la ...
- iOS开发——UI基础-屏幕适配
一.适配 1.什么是适配?适应.兼容各种不同的情况 2.移动开发中,适配的常见种类 2.1系统适配 针对不同版本的操作系统进行适配 2.2屏幕适配 针对不同大小的屏幕尺寸进行适配 二.点和像素 1.在 ...
- IOS开发UI基础之Plis文件-字典转模型
什么是plist文件? 在开发中直接将数据写在代码里面 不是一种合理的做法 如果数据经常改变 就需要经常翻开对应的代码进行修改 造成代码扩展性低 因此,可以考虑将经常变的数据放在⽂文件中进⾏行存储,程 ...
- IOS开发UI基础UIView
主要介绍下UIView得基本概念和一些属性的介绍至于属性的用户后面会由详细的介绍 -.UIView基本概念 1.什么是控件? 屏幕上所有的UI元素都叫做控件 (也有很多书中叫做视图 组件) 比如 按钮 ...
- IOS开发UI基础学习-------总结
什么叫控件? 屏幕上所有UI元素都叫做控件(也有叫做视图.组件) 控件的共同属性 尺寸 位置 背景色 ... 苹果将控件的共同属性都抽取到父类UIView中 所有控件最终都继承自UIView 父子控件 ...
- IOS开发UI基础UIImagePickerController的属性
UIImagePickerController 1.+(BOOL)isSourceTypeAvailable:(UIImagePickerControllerSourceType)sourceType ...
随机推荐
- 简单实用的纯CSS百分比圆形进度条插件
percircle是一款简单实用的纯CSS百分比圆形进度条插件.你不需要做任何设置,只需要按该圆形进度条插件提供的标准HTML结构来编写代码,就可以生成一个漂亮的百分比圆形进度条. 首先要做的就是引入 ...
- MATLAB符号运算
1.符号运算 使用MATLAB可以进行多项式乘除运算,也可以进行因式分解. 例1. 多项式乘除运算(x+3)3 >> syms x;>> expand((x+3)^3) ans ...
- error: Error retrieving parent for item: No resource found that matches the given name 'Theme.AppCompat.Light'.,appcompatv7
error: Error retrieving parent for item: No resource found that matches the given name 'Theme.AppCom ...
- scala言语基础学习八
- POJ2112 Optimal Milking (网络流)(Dinic)
Optimal Milking Time Limit: 2000MS Memory Limit: 30000K T ...
- [codeforces 391D2]Supercollider
这题觉得似乎不难的样子…… 但硬是没有做出来,真是不知说什么好喵~ 注意到没有两条共线的线段具有公共点,没有重合的线段 说明每个十字形最多涉及一个水平线段和一个竖直线段 这说明我们可以二分了:每条线段 ...
- 论文笔记之:Learning Multi-Domain Convolutional Neural Networks for Visual Tracking
Learning Multi-Domain Convolutional Neural Networks for Visual Tracking CVPR 2016 本文提出了一种新的CNN 框架来处理 ...
- SSE入门
此文主要内容来自这篇文章,本文翻译只求能理解,不求逐句翻译. 正文: 我们将在本文中介绍如何在C++/C中使用SSE指令.我的目的不是用SSE写尽可能快的程序,而是试图讲明白它的使用方法. 什么是SS ...
- Page cache和Buffer cache[转1]
http://www.cnblogs.com/mydomain/archive/2013/02/24/2924707.html Page cache实际上是针对文件系统的,是文件的缓存,在文件层面上的 ...
- ruby-thread/process
thread a = 1 threads = [] mutex = Mutex.new 5.times do threads << Thread.new do 1000.times do ...