苹果电脑os是Mac os 而ipone操作系统是ios,都是基于unix内核开发的独立的操作系统。
?xcode3.1下windows 框架,必须有一个root view来控制下面所有子view的切换
UIApplication接收到所有的系统事件和生命周期事件时,都会把事件传递给UIApplicationDelegate进行处理,对于用户输入事件,则传递给相应的目标对象去处理。
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
UIView提供了很多建立和管理视图的方法。
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调用创建和显示任意元素,可将这两个元素结合起来共同构建具体、可操作的界面。
当用户触摸屏幕时,Touchview类收集一系列点,在每个触摸移动之处,touchesMoved:WithEvent:方法调用setNeedsDisplay。这又会触发对drawRect:方法的调用,其中视图将这些点绘制成线段来创建一个可视屏幕路径。
/////////////////////////////////////////////////////////////////////////////////////////////////
先创建一个windows应用程序
1 ) 添加rootviewController类、mainview,editview类都是viewcontroller的派生类。
2)修改程序委托 XXXdelegate.h,先把启动画面从window,改为给window添加的子视图---根视图对象
?#import <UIKit/UIKit.h> ? ?
?@class RootViewControler;
@interface XXXAppdelegate:NSObject<UIApplicationDegate>{
UIWindow * window;
?? ? ? ?RootViewController * rootview;
}
@property (nonatomic, retain) IBoutlet UIWindow * window;
@property (nonatomic,retain) IBoutlet???RootViewController * rootview;
@end;
?
在委托的实现文件XXXAppdelegate.m添加
?- (void) appliccationDidFinishLaunching:(UIApplication*)application{
[window addSubView:rootview.view];
?? ? ? [window makeKeyAndVisible];
?
}
?- (void)dealloc
{
[window release];
?? ? ? ?[rootview release];
?? ? ? ?[super dealloc];
}
3.在IB下添加实例对象
?? ? ?打开mainwindow.xib然后拖拉一个UIViewController到上面生成一个图标,并且在苹果+4打开的identity修改UIViewController类为RootViewController类则表示生成了一个根控制器的实例对象,然后再通过应用程序委托的输出口连接到该实例对象。按住control键并拖拉应用程序委托对象拖到刚生成的视图对象,然后再选择rootview输出口。
4)在IB下,在UIVewController窗口里添加一个view对象。然后才能拖放控件。
5) ?视图的层次关系是RootViewController下有2个子视图MainViewController,EditViewController,子视图之间可以互相切换。
6)RootViewControlle下添加2个子视图
?? ?#import<UIKit/UIKit.h>
?? @class MainVewController;
?? @class EditViewController;
?? @interface RootViewController:UIViewController
?? {
?? ? ? MainViewController * _rootView;
?? ? ? EditViewController ?* _editView;
?? }
??@property (nonatomic, retain) RootViewController * _rootView;
?? @property(nonatomic, retain) EditViewController * _editView;
@end
?
?? #import "RootViewController.h"
?? #import "MainViewController.h"
?? #import "EditViewController.h"
?? @implements RootViewController; ??
?? @synthesize ?_mainView,_editView;
?
?? -(void)viewDidLoad{
?? ? ?if(self._editView == nil)
?? ?{
??EditViewController * editViewTemp = [[EditViewController alloc]initWithNibName:@"editview" ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?bundle:nil];
?? ? ? ? self._editView = editViewTemp;
?? ? ? ? [self.veiw insertSubView:self._editView.view atIndex:0];//记住edit索引为0
?? ? ? ? ? ?//注意不要释放editViewTemp对象
?? ? }
?? ?if(self._mainView == nil)
?? ?{
?? ? ? ? MainViewController * mainViewTemp = [[MainViewController alloc]initWithNibName:@"mainview" ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?bundle:nil];
?? ? ? ? ? self._mainView = mainViewTemp;
?? ? ? ? ?[self.view addSubView:self._mainView.view];//记住main索引为1
?? ? ? //注意不要释放mainViewTemp对象
?? ? }
?
}
?
}
7.)在mainview.xib下点击File's Owner图标点击苹果键+4打开Main view controller identify设置class为MainViewController,将MainViewController的view输出口连接到nib中的视图对象,按住Control键拖拉File's Owner图标到nib中的视图对象,然后选择view输出口。
8.)在mainview里添加一个button然后添加事件响应btnpressed
?? -(IBAction)btnpressed:(id)sender
{
?? ? [ self.view.superview exchangeSubviewAtIndex:1 withSubviewAtIndex:0];//
}
9)在EditView里添加button响应事件
?? -(IBAction)btnpressed:(id)sender
{
?? ?[ self.view.superview exchangeSubviewAtIndex:0 withSubviewAtIndex:1];
}
?
?
?
?
?
?