UIView 和 UIWindow 的学习内容
UIWindow是UIView的子类,一个程序只能有一个window主窗口.
在XCode7之后我们创建UIWindow的对象,代码如下:
//创建一个窗口,使其铺满屏幕(设置大小) 初始化的时候不要用self.window,这样相当于先调用setter方法再申请空间,可能会出现传值错误
_window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; //UIScreen mainScreen代表满屏
//为窗口设置属性(创建一个视图控制器,通过RGB的值进行调色)
[self.window setBackgroundColor:[UIColor colorWithRed:166/255.0 green:100/255.0 blue:30/255.0 alpha:1]];
//设置window的根视图控制器
UIViewController *root = [[UIViewController alloc]init];
[self.window setRootViewController:root];
//绘制window(这一步一定要放到最后一步来,所有程序代码都加载好以后,再绘制Window)
[self.window makeKeyAndVisible];
这样我们就设置好了程序的window界面,相当于设置好了一个画框.
UIView表示屏幕上的一块矩形区域,负责渲染区域的内容,并相应该区域内发生的事件.IOS中所有的可视化控件都是UIView的子类.
struct CGPoint {
CGFloat x;
CGFloat y;
};typedef struct CGPoint CGPoint;//点结构体
struct CGPoint {
CGFloat x;
CGFloat y;
};typedef struct CGPoint CGPoint;//确定大小的结构体
struct CGPoint {
CGFloat x;
CGFloat y;
};
typedef struct CGPoint CGPoint;//一个矩形框的结构体,IOS中使用CGRect类型确定矩形位置以及大小
UIView可以看作是画布~画框做好之后,要放置画布(一共三步):
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)]; //申请内存空间,初始化
view.backgroundColor = [UIColor redColor]; //设置控件属性(在这里对画布UIView进行设置)
[self.window addSubview:view]; //添加子视图
在设置控件属性这一步可以对视图进行更多的设置,比如:
view.center = self.window.center; //将UIView放到window的中心
view.tag = 1; //给视图做一个标记,在window上标记为1
想要使用的时候用:
- (nullable UIView *) viewWithTag:(NSInteger)tag;
比如:
UIView *newView = [self.window viewWithTag:1]; //父视图中tag为1的子视图
frame是UIView的重要属性,是我们用于视图布局的关键。 它决定了视图的大小和位置。frame是CGRect类型,是基于它父视图的坐标系而言的。
bounds 是CGRect,是告诉子视图本视图的原点位置.(通俗的说就是,子视图的frame的origin与父视图的bounds的origin的差,
就是子视图相对于父视图左上角的位置,如果结果为负,则子视图在父视图外)
center 是CGPoint 指的就是整个视图的中心点,改变视图的center也会改变frame.
UIView常用的属性

对视图控制常用的方法:

对视图层次的管理:

UIView 和 UIWindow 的学习内容的更多相关文章
- iOS--UIView和UIWindow用法
基础 UI(user interface)是用户界面:iOS的应用是由各种各样的UI控件组成 UIWindow就是一个窗口,学的第一个基础类,就是一个容器,可以在容器上放不同的内容,每个app都需要借 ...
- iOS开发——UI篇OC篇&UIView/UIWindow/UIScreen/CALayer
UIView/UIWindow/UIScreen/CALayer 1.UIScreen可以获取设备屏幕的大小. 1 2 3 4 5 6 7 // 整个屏幕的大小 {{0, 0}, {320, 480} ...
- web前端开发学习内容
应该 具备的 知识技能 :懂web标准,熟练手写 xhtml css3 并符合 符合w3c标准 代码能 兼容主流浏览器.ie6.7.8.9 ff 等. ...
- STM32学习内容和计划
一.STM32学习内容(流程) 1.学习STM32开发流程 ①MDK使用.建立工程.调试等 ②库开发方法 2.学习STM32常用外设开发 ①GPIO ②中断 ③定时器 ④串口 ⑤CAN 3.学习STM ...
- u-boot代码学习内容
前言 u-boot代码庞大,不可能全部细读,只能有选择的读部分代码.在读代码之前,根据韦东山教材,关于代码学习内容和深度做以下预先划定. 一.Makefile.mkconfig.config.mk等 ...
- 2.Freshman阶段学习内容的确定
我刷知乎.在知乎上答题的程序员,不是很牛逼就是更牛逼,说起各种系统.各种系统的各种版本.各种语言.数据库.算法.IT届的各种圣战都有板有眼.信手拈来.头头是道,不得不服.这导致了一些非常严重的问题:我 ...
- 20155209 2016-2017-2 《Java程序设计》第九周学习总结 ## 教材学习内容总结
教材学习内容总结 JDBC API 允许用户访问任何形式的表格数据,尤其是存储在关系数据库中的数据. 执行流程: •连接数据源,如:数据库. •为数据库传递查询和更新指令. •处理数据库响应并返回的结 ...
- JAVA第十周《网络编程》学习内容总结
JAVA第十周<网络编程>学习内容总结 学习内容总结 1.初听到网络编程四个字可能会觉得很困难,实际上网络编程就是在两个或两个以上的设备(例如计算机)之间传输数据,把数据发送到指定的位置, ...
- # 20145118 《Java程序设计》第4周学习总结 ## 教材学习内容总结
20145118 <Java程序设计>第4周学习总结 教材学习内容总结 本周内容为教材第六.七两张内容. 重点概念: 1.面向对象中,子类继承父类,避免重复的行为定义,是一种简化操作. 2 ...
随机推荐
- javascript正则简单入门
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- [原创]VS2010中创建动态链接库及其调用
[原创]VS2010中创建动态链接库及其调用 一.创建动态链接库 在VS2010中创建动态链接库的步骤如下: 1)生成->编译->生成MyDll 二.调用 当调用DLL中的方法,程序编译产 ...
- (原)使用vectot的.end()报错:iterators incompatible
转载请注明出处: http://www.cnblogs.com/darkknightzh/p/5070672.html 参考网址: http://blog.csdn.net/yxnyxnyxnyxny ...
- php 数组Array 删除指定键名值
if(array_key_exists('keyname',$array)){ //检查数组中此键名是否存在: unset($array['keyname']); //删除后位置仍然保留,但清空了键名 ...
- css显示省略号
white-space:nowrap;overflow:hidden;text-overflow:ellipsis; <!-- 就这三句,,,嘿嘿....->
- 三星S5360(GALAXY Y)首次刷机尝试~
刷机包下载: http://www.romjd.com/Device/samsung-s5360 http://www.shuaji.com/rom/2033.htm#down http://www. ...
- WPF控件中可以用来记录数据用的属性总结
今天遇到一个问题需要为每个控件tooltip根据不同情况显示多组数据,于是需要用到控件的某个属性暂存这个数据.好吧,现在我找到了3个属性可用,给自己做个备忘. 1.Tag 这个属性是object类型 ...
- 【转】如何设置无线路由器的信道以获得最佳WIFI体验?
原文网址:http://jingyan.baidu.com/album/f25ef2546e28e4482c1b8225.html 现在随着移动互联网的发展,移动终端的普及,WIFI越来越必不可少,所 ...
- Xcopy参数介绍
DOS批处理命令,永远是不朽的命令,不仅功能强大,同时,速度也是最快的!但是,很多新手学习计算机,都已经遗忘了本不该忘记的批处理命令. 我们不可数典忘祖,该学习的还是要学习,不该忘记的还是不能忘记,尤 ...
- Eclipse总是自动关闭
-Dosgi.requiredJavaVersion=1.5把INI文件中的这一行删除掉,貌似这样以后模拟器也没再出现timeout的问题了,O(∩_∩)O哈哈~