iphone cookbook 小结 – part 1

cookbook类的书总有很多trick,很多技巧,但是也往往伴随着一些小错误,这本iphone cookbook如是,python cookbook亦是如是。

简介

  • MVC分为以下类别:视图。视图组件由UIView类的子类以及与其相关的UIViewController提供;控制器,控制器行为通过3种关键技术实现:委托,目标操作和通知;模型,模型方法通过数据源和数据含义等协议提供数据。
  • 严格地说,UIViewController类并不是MVC概念中的控制器,这与它的名称不符。它们负责对屏幕中各项进行布局,以及使较复杂的布局细节变得模糊。
  • 每个UIViewController子类都实现了自己的loadView方法。该方法对控制器的子视图进行布局,并建立所有的触发,回调和委托。
  • 委托:许多UIKit类都使用委托移交响应用户交互的责任。在设置某个对象的委托时,让对象传递交互消息,而让该委托负责处理这些事务。UITableView就是一个很好的例子。当用户触击某个表行时,UITableView没有响应该触及操作的内置方式,而是会请示委托。
  • 数据源指任何向另一个对象提供所需数据的对象。
  • 每个程序都刚好包含一个UIApplication实例,可以使用[UIApplication sharedInstance]来引用它。使用[[UIApplication sharedInstance] keyWindow] 查找应用程序的主窗口对象。

视图

  • 一个窗口,多个视图,iPhone的运行规则大体如此。
  • 查询某视图的全部子视图的方法是调用其[parentView subviews]。这将返回一组视图,由后向前排序。
  • 要查询状态栏边框,可以调用[[UIApplication sharedApplication] statusBarFrame]。如果更愿意释放这20像素的屏幕空间,则可以完全隐藏状态栏,使用调用:[[UIApplication sharedApplication] setStatusBarHidden:YES animated:NO]。或者,在应用程序的Info.plist文件中讲UIStatusBarHidden设置为<true/>
  • Defaults存储在应用程序沙盒内部的Library/Preferences中。调用synchronize函数讲立即更新这些默认值,而不是等待程序终止。
  • 截取当前屏幕的图像。[[UIApplication sharedApplication] _writeApplicationSnapshot];
  • 使用CATransition做动画。CA作用于Layer,UIView的animation是作用于view。使用mapcurl动画。
  • #if defined(TARGET_IPHONE_SIMULATOR)判断是否是模拟器。
  • 当touchMoved事件时计算水平方向和垂直方向的位移,touchEnd时commit动画。

视图控制器

  • viewDidAppear和viewDidDisappear:每次UIViewController视图进入屏幕或离开屏幕时都会调用这两个方法,通常因为视图之间的导航。使用这些方法刷新视图,以反映数据状态并更新存储的数据。
  • 发送presentModalViewController:animated:消息之后,一个新的视图控制器将滑入屏幕并结果控制权,直到被dismissModalViewController:animated:取消。
  • self.navigationItem.rightBarButtonItem = xxButton; self.navigationItem.titleView = xxView;
  • 添加分段控件:1,Create UISegmentController 2,self.navigationItem.titleView = xxxSegmentView;
  • 在navigationItem.titleView中设置toolbar view
  • 对于NavigationController,顶部的ViewController将占用该数组的最后一个位置(n-1),而根对象的下标仍然为0
  • UITabBarController,将allowCustomizing设置为YES,以支持用户对栏的重新排序。还可以制定用户在以交互式的方式定制底部选项卡栏时,可以从整个列表中进行选择:tabBarController.customizeableViewControllers = controllers;

警告用户

  • 创建多行按钮显示:1,设置多个otherButtonTitles 2,setNumberOfRows
  • 自动计时的无按钮警告:NSTimer,dismissWithClickedButton
  • alert框中添加文本输入:(添加)addTextFieldWithValue;获取[[ alertView textFieldAtIndex:0] text]
  • 显示ActionSheet。显示时可以调用showInViw或者showFromToolBar:和showFromTabBar
  • 使用UIProgressHUD显示loading view提示
  • 添加状态栏图像:addStatusBarImageNamed;removeStatusBarImageNamed:
  • 添加应用程序标记:Application setApplicationBadge
  • 简单的音频警告:Create SystemSound ID; PlaySystemSound;使用kSystemSoundID_Vibrate产生震动
  • 无论何时何任务占用大量时间时,一定要对用户有礼貌并且显示一种进度反馈。

0 comments:

Leave a Reply

Your email address will not be published. Required fields are marked *