`

IOS几个基本界面元素window(窗口)、视图(view)

    博客分类:
  • IOS
阅读更多

要在屏幕上显示内容首先要创建一个窗口承载内容,要创建一个窗口,需要一个边框(frame),含有边框信息的底层 结构就CGRect。每个能够在屏幕上显示自己的对象都有一个边框,定义了他的显示区域,不过许多高层的视图类会自动计算这一信息。其他的那些类则在视图初始化时通过一个initWithFrame的初始化方法来设置。

再来认识一个类:UIScreen。UIScreen类代表了屏幕,通过这个类我们可以获取一些想要的东东。

CGrect screenBounds = [ [UIScreen mainScreen]bounds];//返回的是带有状态栏的Rect
CGRect viewBounds = [ [UIScreen mainScreen]applicationFrame];//不包含状态栏的Rect
//screenBounds 与 viewBounds 均是相对于设备屏幕来说的
//所以 screenBounds.origin.x== 0.0 ;   screenBounds.oringin.y = 0.0;   screenBounds.size.width == 320;  screenBounds.size.height == 480(或者其他分辨率有所差异)
//所以 screenBounds.origin.x== 0.0 ;   screenBounds.oringin.y = 20.0;(因为状态栏的高度是20像素)   screenBounds.size.width == 320;  screenBounds.size.height == 480

 

UIView

下面来认识一下UIView类,这个类继承自UIResponder,看这个名字我们就知道它是负责显示的画布,如果说把window比作画框的话。我们就是不断地在画框上移除、更换或者叠加画布,或者在画布上叠加其他画布,大小当然 由绘画者来决定了。有了画布,我们就可以在上面任意施为了。很多简单的东西我会把库里面的内容贴出来,如果东西太多贴出来就不太好,朋友们自己去库文件里面看吧。这个类在UIView.h里面。下面我们先学习一些基础的东西,其他的东东会在以后慢慢展开。

 

UIView* myView =[[ UIView alloc]initWithFrame:CGRectMake(0.0,0.0,200.0,400.0)];//这里创建了一块画布,定义了相对于父窗口的位置, 以及大小。
 
我们可以把这块画布加到其他画布上,具体方法后面会讲到。我们还可以在这块画布上画上其它好玩的东东,具体情形后面会一一讲解。

 

UIWindow

UIWindow继承自UIView,关于这一点可能有点逻辑障碍,画框怎么继承自画布呢?不要过于去专牛角尖,画框的形状不就是跟画布一样吗?拿一块画布然后用一些方法把它加强,是不是可以当一个画框用呢?这也是为什么 一个view可以直接加到另一个view上去的原因了。

看一下系统的初始化过程(在application didFinishLauchingWithOptions里面):

self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
self.window.backgroundColor = [UIColor grayColor];//给window设置一个背景色
[self.window makeKeyAndVisible];//让window显示出来

 

实战演练:

没结束我会用一个综合的 例子来总结我的学习成果,彻底理解所学,我觉得既然选择写代码,就要理解原理,否则只知其然不知其所以然是不能做一个好的程序员的。

1)新建一个工程选择Empty Application   名字为LW1
2)在application didFinishLaunchingWithOptions里面,你会发现系统已经建好一个画框了,我们现在就用系统帮我们建好的画框,你当然也可以自己建一个画框,不过没这个必要了,忘了讲了,一个应用程序只能有一个画框。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];//系统帮你建画框
    // Override point for customization after application launch.
  
    //自己测试一下 bounds与aplicationFrame的区别
    CGRect bound = [[UIScreen mainScreen]bounds];
    NSLog(@"boundwidth:%f    boundheight:%f ",bound.size.width, bound.size.height);
    NSLog(@"boundx:%f    boundy:%f ",bound.origin.x, bound.origin.y);
    
    CGRect appBound = [[UIScreen mainScreen]applicationFrame];
    NSLog(@"appBoundwidth:%f    appBoundheight:%f ",appBound.size.width, appBound.size.height);
    NSLog(@"appBoundx:%f    appBoundy:%f ",appBound.origin.x, appBound.origin.y);

    //画第一块画布然涂成蓝色,大小是320 X 100
    CGRect CGone = CGRectMake(0.0, 0.0, 320, 100);//画个矩形,初始化位置与大小
    UIView *v_one = [[UIView alloc]initWithFrame:CGone];//初始化view
    v_one.backgroundColor = [UIColor blueColor];// 涂成蓝色
    [self.window addSubview:v_one];//直接加到画框上
    
    //第二块注意它的位置
    CGRect CGtwo = CGRectMake(0.0, 100, 160, 100);//画个矩形、初始化位置与大小
    UIView *v_two = [[UIView alloc]initWithFrame:CGtwo];//初始化view
    v_two.backgroundColor = [UIColor redColor];//涂成红色
    [self.window addSubview:v_two];//叠加到画框
    
    //第三块注意他的位置
    CGRect CGthree = CGRectMake(160, 100, 160, 100);//
    UIView *v_three = [[UIView alloc]initWithFrame:CGthree];//
    v_three.backgroundColor = [UIColor greenColor];//
    [self.window addSubview:v_three];//
    //第四块注意它的位置
    CGRect CGfour = CGRectMake(0.0, 260, 320, 200);//
    UIView *v_four = [[UIView alloc]initWithFrame:CGfour];//
    v_four.backgroundColor = [UIColor orangeColor];//
    [self.window addSubview:v_four];//
//第五块,计算一下它的位置,看看它的效果,你可以让试一下把这段代码移到第一快初始化的上面试试,会有意想不到的效果
    CGRect CGfive = CGRectMake(100, 150, 160, 200);
    UIView *v_five = [[UIView alloc]initWithFrame:CGfive];
    v_five.backgroundColor = [UIColor yellowColor];
    [self.window addSubview:v_five];
    self.window.backgroundColor = [UIColor grayColor];//
    [self.window makeKeyAndVisible];//
    return YES;
}

 

转自:http://blog.csdn.net/iukey/article/details/7083165

分享到:
评论

相关推荐

    iOS视图及视图控制器PPT课件.pptx

    在iOS开发中,视图(View)和视图控制器(View Controller)是构建用户界面的基础元素。本课件主要介绍了iOS中的窗口与视图、视图控制器及其应用实例。 首先,我们来了解一下iOS的窗口(Window)与视图(View)。在...

    iOS视图及视图控制器PPT学习教案.pptx

    在iOS开发中,视图(View)和视图控制器(View Controller)是构建用户界面的基础元素。本教程主要涵盖了iOS的窗口(Window)与视图(View)的概念,以及视图控制器(ViewController)的使用。 首先,我们来看iOS的...

    iOS视图及视图控制器PPT教案.pptx

    在iOS系统中,视图(View)和视图控制器(UIViewController)共同构成了用户界面的基本结构。以下是对这两个概念的详细解释。 16.1 iOS的窗口(Window)与视图(View) 窗口在iOS中扮演着显示内容和处理用户交互的...

    view-高级切换-图片或者界面-window底层显示

    在IT行业中,尤其是在移动应用开发或者桌面应用开发中,"view-高级切换-图片或者界面-window底层显示"这个主题涉及到的是视图(View)的动态更新、界面切换以及窗口(Window)的底层渲染机制。视图是用户界面的基础...

    IOS应用源码Demo-窗口淡入淡出加视图旋转SwitchView-毕设学习.zip

    在iOS应用开发中,窗口(Window)和视图(View)是构建用户界面的基本元素,而淡入淡出效果和视图旋转则是提升用户体验的重要手段。这个名为"IOS应用源码Demo-窗口淡入淡出加视图旋转SwitchView-毕设学习.zip"的...

    ioswindow层级管理

    任意时刻任意地方向window添加任意数量的view或viewcontroller,其在window的层级很那管理,该demo把所有的view和viewcontroller管理起来。实现向window最后添加的view或viewcontroller在最前面。

    第2章:窗口与视图.pdf

    在iOS开发中,窗口(Window)与视图(View)是构建用户界面(GUI)的基础元素,本章将深入探讨这两个概念以及相关的编程技术。在iPhone应用开发中,特别是使用Objective-C语言时,理解窗口与视图的工作原理至关重要...

    iOS手动控制界面旋转

    手动控制界面旋转的核心思路就是利用UIView的transform属性,旋转App的根视图。何为根视图?如果你的App的window.rootViewController是UINavigationController,那么根视图就是navigationController.view。

    导航控制器和表视图(一)

    在iOS应用开发中,导航控制器(Navigation Controller)与表视图(Table View)是两个非常重要的组件,它们在构建用户界面时起着至关重要的作用。本文将深入探讨这两个概念,以及它们如何协同工作来提供流畅的用户...

    ios独立于window上的button-home键

    在iOS开发中,"ios独立于window上的button-home键"这个话题主要涉及到的是自定义UI设计和系统交互的实现。通常,iOS设备的Home键是系统级别的,它负责退出应用、唤醒屏幕等核心功能,而作为开发者,我们可能需要在...

    代码 实现UIDatePicker控件 和 Tab Bar 视图切换

    在iOS应用开发中,UI设计和用户交互是至关重要的元素,`UIDatePicker`和`Tab Bar`就是其中两个常见的组件。本篇文章将详细讲解如何使用Swift或Objective-C实现`UIDatePicker`控件以及与`Tab Bar`视图间的切换。 ...

    IOS编程指南

    本篇指南将从视图(Views)的基本概念入手,深入探讨绘制(Drawing)、文本与图像(Text & Images)以及动画(Animation)等关键领域,旨在为iOS开发新手提供全面且实用的知识体系。 #### 二、视图(Views) ##### 2.1 视图...

    无线互联ios_UI_基础部分ppt

    这一章深入探讨了iOS中的视图(View)和窗口(Window)系统。讲解了UIView类的层次结构,如何添加、删除和管理视图,以及视图的坐标系统和动画效果。同时,也涵盖了UIResponder响应链的工作原理,它是用户交互的基础...

    iOS开发之如何获取视图在屏幕中显示的位置

    在iOS开发中,获取视图在屏幕中显示的位置是一个常见的需求,特别是在实现动态布局或交互效果时。本文将详细介绍如何获取iOS应用中视图相对于屏幕的位置,并提供具体的方法实现。 首先,我们需要理解屏幕坐标系统与...

    iPhone多视图切换

    本教程将专注于使用Objective-C或Swift实现iPhone上的多视图切换,特别是通过窗口(Window)和视图(View)的管理来实现这一功能。我们将探讨以下核心知识点: 1. **UIViewController**:在iOS中,UIViewController...

    Object-C 中将视图控制器加到UIWindow

    首先,你需要创建一个视图控制器实例,然后将其视图设置为窗口的根视图。 ```objc UIViewController *rootViewController = [[UIViewController alloc] init]; UIWindow *window = [UIApplication ...

    ios-改变状态栏.zip

    然而,"创建一个顶部的window添加到系统的window上"这个描述可能意味着我们需要在状态栏之上添加一个自定义视图。在这种情况下,我们可以创建一个新的`UIWindow`实例,并将其设置为高于主窗口的层级。这样,我们就...

    HWPopupView:IOS Popup 自定义视图,Popup View,Popup Window

    弹出式视图IOS自定义Popup view,Popup Window============ 用法 //custom viewBBJShareAlertView * shareAlertView = [BBJShareAlertView initWithTitle:@"aa" andReferView:nil]; //Popup custom viewself....

Global site tag (gtag.js) - Google Analytics