UI开发基础和控件

来自视频课件: http://code4app.com/course/28-2954-3199

UIKit是一个提供了在IOS实现了图形,事件驱动程序的框架

UIView是视图的基类

UIViewController是视图控制器的基类

UIResponder表示是一个可以在屏幕上接受触摸事件的对象。

窗口(UIWindow)是视图的一个子类,窗口的主要功能,1,提供区域来显示视图,2将事件分发给视图。

UIKit的类图:



窗口和视图

窗口本身不具备任何可见的内容,它是对应用程序的视图提供了一个基本的容器。视图就是在你想要在窗口的某个部分显示的内容。可以是图像,文本等。视图还可以组织和管理其他视图。总体来讲,一样的都是视图树,都遵循组合模式。


每个应用程序至少需要一个窗口,通常窗口用UIWindow的实例来表示。注意UIWindow继承自UIView。

大多数IOS应用程序在生命周期内只有一个UIWindow。并且在应用程序的生命周期内,窗口跨越整个设备的主屏幕和应用程序的主nib文件被加载(或者以编程的方式被加载)。但是,如果应用程序支持外部显示器视频输出,它可以创建额外的窗口,以显示外部显示器的内容。所有其他的窗口由系统创建。


创建和配置UIWindow

通过xib来创建,通过mainwindow.xib文件加载进行实例化

//创建一个全屏的window
self.window = [[[UIWindow alloc] initWithFrame: [UIScreen mainScreen] bounds] autorelease];
//把viewController设置为window的根控制器
selft.window.rootViewController  = self.viewController;
//显示window
[self.window makeKeyAndVisible];

UIScreen对象可以充当IOS设备物理屏幕的替代者。

[UIScreen mainScreen] bounds]用来获取屏幕大小,解决一些尺寸适配的问题。


获取当前UIWindow级别

通过UIApplication获取keyWindow

keyWindow用来管理键盘和非触摸类的消息,并且只能有一个window是keyWindow。

UIWindow * keyWindow = [UIApplication shareApplication].keyWindow;

每个UIWindow配置windowLevel属性,分为3个级别,类似于窗口的z轴优先级,分别为:

UIWindowLevelAlert > UiWindowLevelStatusBar > UIWindowLevelNormal



视图UIView

视图,通常就是UIView的一个对象,表示屏幕上的一块矩形区域,同时处理该区域的绘制和触屏事件。

一个视图可以作为其他视图的父视图,来管理子视图的位置和大小。

视图结构和相关函数

CGPoint point = CGPointMake(x,y);//位置

CGSize size = CGSizeMake(width, height);//大小

CGRect rect = CGRectMake(x,y,width,height);//位置和大小



IOS坐标系统,左上角为原点。

每一个view的frame所用的坐标系是父视图的左上角为原点。

相对于frame,bounds是以ios系统坐标原点为起点,坐标为(0,0)

center,表示视图中心点所在的位置,此属性可以改变视图的位置。

当改变frame,bounds,center其中一个值时,另外两个值相应会变化。



Screens, Windows, and Views 创建可视化界面


类的继承关系




创建UIView

xib方式

NSBundle *bundle = [NSBundle mainBundle];
NSArray *arr  =  [bundle loadNibNamed:@"myView" 
						owner: self 
						options: nil];
UIView *myView = [arr objectAtIndex: 0];

代码方式

CGRect rect = CGRectMake(0, 0, 100, 100);
UIView *myView = [[UIView alloc] initWithFrame: rect];


UIView的常用方法

当调用addSubView的时候,会对其进行保留,理解为retain一个对象就可以,当调用removefromSuperview时候,会进行释放,也就是release。

1、添加视图
     insertSubview:atIndex:   //放在子视图数组的具体索引位置
     insertSubview:aboveSubview:   //某个子视图前面
     insertSubview:aboveSubview:   //某个子视图前面

2、重新排序和删除子视图
      [parentView exchangeSubviewAtIndex:i withSubviewAtIndex:j]//交换两个视图的位置
      bringSubviewToFront:和sendSubviewToBack://将子视图提前活置后
      [childView removeSuperview]//删除某个视图的子视图

3、视图回调
某个视图的层次一改变,该视图就会收到一次回调。
   a、调用addSubivew:成功后会给该视图发送didAddSubivew:回调,触发UIView的子类在心增视图时执行其他操作。
   b、didMoveToSuperview:会通知相关视图他们的上级视图已经变化。
   c、视图移动前会发出willMoveToSuperview:回调
   d、didMoveToWindow:回调和didMoveToSuperview:相似,从命名上能看出其区别。
   e、willMoveToWindow:在视图移动前发出的回调。
    f、willRemoveToSubview:回调通知父视图子视图即将被删除

UIView掌管直接屏幕绘图。他的drawRect:方法提供一种低级方式来直接绘制内容,允许使用Quartz 2D调用创建和显示任意元素,可将这两个元素结合起来共同构建具体、可操作的界面。


视图对象的清理

如果手动创建了一个视图,分配了任何内存,存储了任何对象的引用,都需要进行资源释放,必须实现dealloc方法。当某个对象引用基数为0,系统会调用其dealloc方法,去释放对象资源,切记不要手动调用dealloc方法。

-(void) dealloc
{
	//释放自定义对象
	[super dealloc];
}


UIView的可以实现几个基本的动画,平移,旋转,透明度设置,缩放,和android基本是一致的。


你可能感兴趣的:(ios)