《2022年iPhone开发基础教程 .pdf》由会员分享,可在线阅读,更多相关《2022年iPhone开发基础教程 .pdf(15页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1 欢迎来到 iPhone 的世界关于本书必要条件运行 Leopard 的基于 Intel 的 Macintosh 计算机注册成为 iphone 开发人员,下载iphone SDK 关于并标准版与企业版问题必备知识Object-C 编程知识iPhone 本身的熟悉(特性,界面,程序外观)Iphone程序有何不同只有一个正在运行的应用程序执行代码时唯一的运行程序只有一个窗口应用程序与用户所有交互在此完成受限访问程序访问权限(文件读写,网络端口访问,管理员操作)有限的响应时间较快的响应时间确保用户退出时不会丢失数据有限的屏幕大小480*320 有限的系统资源内存不足,可用内存限制缺少 Cocoa
2、工具垃圾回收新属性与众不同的方法没有键盘鼠标的交互方式名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 15 页 - - - - - - - - - 本书内容准备开始吧2 创建基本项目在 Xcode 中设置项目启动 Xcode 创建新项目File-New Project iphone-application- 项目模板View-Based Application Choose 保存项目窗口Classes Obejct-C 类Other Sources .pch main.m
3、 Resources .xib .plist xib FramewWorks Products Interface Buider 简介Xib 文件代码UIButton *myButton=UIButton alloc initWithFrame:aRect; 界面对象组件面板拖Nib 文件的构成视图中添加标签双击添加文本保存Save Build Build and Run Inspector 窗口名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 15 页 - - - - -
4、 - - - - Iphone 美化.png Info.plist 3 处理基本交互模型 -视图 -控制器范型MVC M 保存应用程序数据的类设计一些Object-C 类来保存应用程序的数据V 窗口,控件和其他用户可以看到并能与之交互的元素组成部分C 将模型与视图绑定在一起,确定如何处理用户输入的应用程序逻辑开发人员创建的类和特定于应用程序的类组成通用控制器类确保实现最大可重用性创建项目创建视图控制器UIViewController 子类输出口IBOutlet UIButton *myButton; 操作方法(IBAction)doSomething:(id)sender; 添加到接口#imp
5、ort interface Button_FunViewController:UIViewController IBOutlet UILabel *statusText; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 15 页 - - - - - - - - - property(retain,nonatomic) UILabel *statusText; -(IBAction) buttonPressed:(id)sender; end 垃圾收集如果定义的属性是一个对
6、象,通常可选属性应该指定为retain 额外代码的生成开销nonatomic 点表示法用于修改访问添加到实现#import “ Button_FunViewController.h ”- implementation Button_FunViewController synthesize statusText; -(IBAction)buttonPressed:(id)sender NSString *title=sender titleForState:UIControlStateNormal; NSString *newText=NSString alloc initWithFormat:
7、” % button pressed.” ,title; statusText.text=newText; newText release; -(void)dealloc statusText release; super release; end 简便方法工厂方法如果未分配它或者保留它,则不要释放它。自动释放的代价消息嵌套名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 15 页 - - - - - - - - - 使用应用程序的委托Button_FunAppDelega
8、te.h #import class /注意Button_FunViewController; interface Button_FunAppDelegate:NSObject IBOutlet UIWindow *window; IBOutlet Button_FunViewController *viewController; property (nonatomic,retain) UIWindow *window; property (nonatomic,retain) Button_FunViewController *viewController; end Button_FunApp
9、Delegate.m #import “ Button_FunAppDelegate.h ”#import” Button_FunViewController.h ”implementation Button_FunAppDelegate synthesize window; Synthesize viewController; -(void) applicationDidFinishLaunching:(UIApplication*)application window addSubview:viewController.view; window makeKeyAndVisible; -(v
10、oid)dealloc viewController release; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 15 页 - - - - - - - - - window release; super dealloc; end 编辑 MainWindow.xib 编辑 Button_FunViewController.xib Interface Builder 中创建视图拖动连接所有元素Control 单击拖向蓝色引导线灰色菜单statusText 指定操作测试4
11、 更丰富的用户界面满是控件的屏幕活动,静态和被动控件创建应用程序导入图像实现图像视图和文本字段a)确定输出口b)确定操作c)构建界面添加图像视图a)调整图像视图b)Mode 属性多大小显示为图创建多个副本c)Alpha 滑块除非有足够的理由,否则该值置为1.0 d)忽略 background e)Tag 属性标记值快速可靠确定sender参数传递给操作方法的控件名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 15 页 - - - - - - - - - f)Drawing
12、 复选框g)Interaction 复选框添加文本字段a)文本字段设置b)文本输入特征c)其他设置设置第二个文本字段的属性连接输出口构建运行完成输入后关闭键盘-(IBAction )textFieldDoneEditing: (id)sender sender resignFirstResponder; 通过触摸背景关闭键盘实现滑块和标签确定输出口和操作添加输出口和操作IBOutlet UILabel *siderLabel; proprerty (retain,nonatomic)UILabel *sliderLabel; -(IBAction) sliderChanged: (id)sen
13、der; synthesize sliderLabel; -(BAction)sliderChanged: (id)sender UISlider *slider=(UISlider*)sender; Int progressAsInt=(int)(slider.value+0.5); NSString *newText=NSString alloc initWithFormat:” %d” ,progressAsInt; sliderLabel.text=newText; newText release; 添加滑块和标签连接操作和输出口名师资料总结 - - -精品资料欢迎下载 - - - -
14、 - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 15 页 - - - - - - - - - 实现开关和分段控件确定输出口和操作添加输出口和操作#define kShowSegmentIndex 0 IBOutlet UISwitch *leftSwitch; IBOutlet UISwitch *rightSwitch; IBOutlet UIView *switchView; property (nonatomic,retain)UISwitch *leftSwitch; property (nonatomic,retai
15、n)UISwitch *rightSwitch; property (nonatomic,retain)UIView *switchView; -(IBAction)switchChanged: (id)sender; -(IBAction)toggleShowHide: (id)sender; synthesize leftSwitch; synthesize rightSwitch; synthesize switchView; -(IBAction)switchChanged: (id)sender UISwitch *whichSwitch = (UISwitch*)sender; B
16、OOL setting =whichSwitch.isOn; leftSwitch setOn:setting animated:YES; rightSwitch setOn:setting animated:YES; -(IBAction)toggleShowHide: (id)sender UISegmentedControl *segmentedControl = (UISegmentedControl* ) sender; NSInteger segment=segmentedControl.selectedSegmentIndex; If(segment = kShowSegment
17、edIndex)switchView setHidden:NO; Else switchView setHidden:YES; 添加开关和分段控件添加另一个视图添加两个带标签的开关连接输出口名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 15 页 - - - - - - - - - 实现按钮,操作表和警报添加输出口和操作interface Control_FunViewController:UIViewController IBOutlet UIButton *doSom
18、ethingButton; property (nontomic,retain)UIButton *dSmethingButton; -(IBAction)doSomething: (id)sender; 在 Interface Builder 中添加按钮实现按钮的操作方法synthesize doSomethingButton; -(IBAction)doSomething: (id)sender UIActionSheet *actionSheet = UIActionSheet alloc initWithTitle: ” Are you sure ?”delegate:self can
19、celButtonTitle: ” No Way!”destructiveButtonTitle: ” Yes,I ,m sure!” otherBttonTitles:nil; actionSheet showInView:self.view; actionSheet release; -(void)actionSheet: (UIActionSheet*)actionSheet didDismissWithButtonIndex: (NSInteger)bttonIndex If(!buttonIndex=actionSheet cancelButtonIndex) NSString *m
20、sg=nil; If(nameField.text.length0) Msg=NSString alloc initWithFormat: ” You can breathe easy,%,everything went OK. ” ,nameField.text; Else Msg=” You can breathe easy,everything went OK.” ; UIAlerView *alert= UIAlerView alloc initWithTitle: ” Something wasdone”message:msg delegate:self cancelButtonTi
21、tle: ” Phew!”otherButtonTitles:nil; alert show; alert release; msg release; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 15 页 - - - - - - - - - 显示操作表美化按钮ViewDidLoad 方法-(void) viewDidLoad jmUIImage *buttonImageNormal=UIImage imageNamed: “ whiteButton.png ” ; U
22、IImge *stretchableButtonImageNormal = buttonImageNormal strechableImageWithLeftCapWidth:12 topCapHeight:0; doSomethingButton setBackgroundImage:stetchableButtonImageNormal forState:UIControlStateNormal; UIImage *buttonImagePressed = UIImage imageNamed: ” blueButton.png ” ; UIImage *stetchableButtonI
23、magePressed = buttonImagePressed stretchableImageWithLeftCapWidth:12 tpCapHeight:0; doSomethingButton setBackgroundImage:stretchableButtonImagePressed forState:UIControlStateHeighted; 控件状态普通突出显示禁用选中可拉伸的图像5 自动旋转和自动调整大小使用自动调整属性处理旋转指定旋转支持Classes AutoSizeViewController.m -(BOOL)shuldAutorotateToInterfac
24、eOrientation: (UIInterfaceOrientation)interfaceOrientation Return (interfaceOrientation = UIInterfaceOrientationPortrait / | / YES); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 15 页 - - - - - - - - - 设计界面自动调整属性按钮的自动调整属性在旋转时重构视图声明和连接输出口在旋转式移动按钮-(void) willAn
25、imalSecondHalfOfRotationFromInterfaceOrientation: (UIInterfaceOrientation)fromInterfaceOrientation Durarion: (NSTimeInterval)duration UIInterfaceeOrientation toOrientation=self.interfaceOrientation; /UIView beginAnimations: ” move buttons” context:nil ; If(toOrientation = UIInterfaceOrientationPortr
26、ait | toOrientation = UIInterfaceOrientationPorraitUpsideDown ) Button1.frame = CGRectMake(20,20,125,125); Else Button1.frame =CGRectMake(20,20,125,125); /UIView commitAnimations; 切换视图确定输出口和动作设计两个视图实现交换和动作名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 15 页 - -
27、 - - - - - - - 链接 Core Graphics框架6 多视图应用程序View Switcher 应用程序多视图应用程序的体系结构多视图控制器也是视图控制器内容试图剖析构建 View Switcher 创建视图控制器和nib 文件Window-Base application 修改应用程序委托SwitchViewController.h 修改 MainWindow.xib 编写 SwitchViewController.m 实现内容视图制作转换动画重构7 标签栏与选取器Pickers应用程序委托与数据源建立工具栏框架创建文件设置内容视图nib 添加根视图控制器名师资料总结 - -
28、 -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 15 页 - - - - - - - - - IPHONE 入门Initializing the MoveMe Application Main 创建应用程序的top-level autorelease pool 回收内存调用 UIApplicationMain函数来创建MoveMe 应用的主要对象,初始化这些对象,并开始 event-processing 循环只有当该循环结束时应用程序从该程序返回Creating the Applicati
29、on Delegate Delegate 对象的创建和将应用程序窗口展示给用户Delegate 对象在应用退出时顺序的执行应用的shutdowm 操作并保存所有下次启动时需要的状态信息Nib 文件用于连接应用程序对象和创建的delegate对象Create the Application Window 唯一运行的程序,只有一个窗口窗口负责用户界面的表面描画,视图对象提供实际的内容应 用 程 序 启 动 并 准 备 开 始 处 理 事 件 时UIApplication 对 象 发 送 给 delegate 对 象applicationDidFinishLaunching消息, 提示 delega
30、te 将内容放进窗口并且执行其他需要的初始化工作创建视图控制器实例来管理窗口内容视图使用需要进行内容管理的nib 文件的名字初始化视图控制器添加控制器的视图作为窗口的子视图显示窗口-(void) applicationDidFinishLanching: (UIApplication*)application UIViewController* aViewController=UIViewController alloc initWithNibName: ” MoveMeView ” bundle: NBundle mainBundle; self.viewController=aViewCo
31、ntroller; aViewController release; UIView* controllersView=viewController view; window addSubview:controllersView; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 15 页 - - - - - - - - - window makeKeyAndVisible; 早期别包含太多的任务,尤其是后期容易执行的任务,展示给用户时反应迟钝Drawing the wel
32、come Button 描画背景图片计算 WELCOME字符串的坐标用来设置字符串的居中设置描画颜色为黑色描画字符串为黑色,以及细微的偏移量设置描画颜色为白色用白色重新描画一边字符串-(void)drawRect: (CGRect)rect placardImage drawAtPoint: (CGPiontMake(0.0,0.0); CGFloat x=self.bounds.size.width/2 textSize.width/2; CGFloat y=self.bounds.size.height/2-textSize.height/2; CGPoint point; UIFont
33、*font = UIFont systemFontOfSize: fontSize; UIColor blackColor set; Point= CGPointMake(x,y+0.5); currentDisplayString drawAtPoint:point forWidth: (self.bounds.size.width-STRING_INDENT) withFont:font fontSize:fontSize lineBreadMode:UILineBreakModeMiddleTruncationbaselineAdjustment:UIBaselineAdjustment
34、:UIBaselineAdjustmenAlignBaselines; UIColor whiteColor set; Point=CGPointMake(x,y); currentDisplayString drawAtPoint:point forWidth: (self.bounds.size.width-STRING_INDENT) withFont:font fontSize:fontSize lineBreadMode:UILineBreakModeMiddleTruncationbaselineAdjustment:UIBaselineAdjustment:UIBaselineAdjustmenAlignBaselines; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 15 页 - - - - - - - - - Handing touch Events 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 15 页 - - - - - - - - -