《iPhone与iPad开发实战—iOS经典应用剖析》连载三

news/2024/7/20 22:16:04 标签: iphone, ipad, ios, xcode, uiview, interface
3.3     应用实战与讲解
这一节我们将实际编写这个应用,边做边讲解的方式。按照搭建应用骨架、视图翻转动画、主视图UI和代码、主视图控制器代码、背后视图UI和代码、背后视图控制器,这样的顺序编写和讲解。
3.3.1     构建应用骨架
在本书采用Xcode3.2工具中提供了一个编写实用型应用程序的模板,图3-11是Xcode3.2的模板,其中Utility Application选项就是创建实用型应用程序。
  

图3-11 实用型应用模板

但是遗憾的是本应用的原作者代码,没有采用Xcode3.2模板,我们比较一下它们的不同,使用Xcode3.2生成的类图如图3-12所示。
  

图3-12  Xcode3.2生成的类
    为了尊重原作者,在本书中如果涉及到由于历史版本引起的问题,我们还是按照原作者应用始版本介绍和构建应用。
比较类图3-8和3-12会发现,Xcode3.2没有MainView 和FlipsideView两个自定义视图类,而是直接采用UIView类,Xcode3.2中MainViewController类还实现了一个FlipsideViewControllerDelegate协议,FlipsideViewControllerDelegate协议是旧版本中没有的,而Xcode3.2中没有RootViewController控制器类。这正是两个版本区别的关键,在旧版本中视图跳转和返回都是通过根控制器RootViewController实现控制的,在Xcode3.2中是通过MainViewController实现FlipsideViewControllerDelegate协议视图翻转控制的,MainViewController即使主视图控制器也是根控制器。
由于我们要构建与旧版本一样的类,所以要添加MainView、FlipsideView和RootViewController类。先创建MainView选择Main View文件夹,右键菜单New File弹出对话框如图3-13所示,选择Objective-C class,Subclass of为UIView,选择好后点击Next,在类名中输入MainView。
  

图3-13 创建UIVew
MainView生成之后还需要修改对应的nib文件,在Xcode中双击MainView.xib然后Interface Builder会打开MainView.xib窗口如图3-14所示,



图3-14 MainView.xib窗口
从图3-14中可以看到View的类型是UIView,我们需要把它改成为MainView,为了实现这一个目的,请选择菜单Tools->Inspector打开检查器窗口,选择 标签打开检查器如图3-15所示,选择MainView类。
  

图3-15视图检查器
选中双击Main View打开设计窗口如图3-16所示,该视图是使用Xcode3.2工具生成的,我们需要恢复到默认视图状态,如图3-17所示。
        

图3-16 Xcode3.2模板生成视图                             图3-17 修改后视图
为了达到这一效果需要删除 按钮,并把视图背景修改颜色为默认颜色。删除 按钮过程是用鼠标点中该按钮,使用键盘delete就可以删除了,而视图背景修改需要打开检查器窗口选择标签 后如图3-18,修改Background属性使背景颜色被默认白色。

  

图3-18 修改视图背景
按照上面的方法创建FlipsideView类,该类创建完成需要修改它对应的FlipsideView.xib文件,在Interface Builder会打开FlipsideView.xib窗口,选中双击Flipside View打开设计窗口如图3-19所示,该视图是使用Xcode3.2工具生成的,我们需要恢复到默认视图状态,如图3-20所示。
          

              图3-19 Xcode3.2模板生成视图                                图3-20 修改后视图
为达到图3-20效果,需要删除Title部分导航栏,在本应用中导航栏是通过代码动态添加到视图上面去的,而不是在视图设计窗口中拖拽上去的。删除导航栏和修完成背景后我们会发现视图变成如图3-21所示带有状态栏。
  

图3-21 状态栏视图
我们需要去掉这个状态栏,打开视图检查器如图3-22所示,将Status Bar选择为Unspecified。
  

图3-22 视图检查器
并配置它们的创建过程完全一样这里就不再过多介绍了。下面介绍RootViewController创建和配置,选择一个文件夹,右键菜单New File弹出对话框如图3-23所示,选择UIViewController subclass,并在Options部分去掉With XIB for user interface,就是不创建nib文件。选择好后点击Next,在类名中输入RootViewController。
  

图3-23 创建视图控制器
RootViewController生成之后还需要修改MainWindow.xib文件,在Xcode中双击MainWindow.xib然后Interface Builder会打开MainWindow.xib窗口如图3-24所示。点中MainViewController后选择菜单Tools->Inspector打开检查器窗口,选择  标签打开检查器窗口在Class中选择RootViewController类。



图3-24 MainWindow.xib窗口

http://www.niftyadmin.cn/n/1037018.html

相关文章

关于约数的题目

1.约数个数定理 设n∏i1kpiqi设 n\prod^k_{i1}p_{i}^{q_{i}}设n∏i1k​piqi​​ 则n的约数个数为∏i1k(qi1)。则n的约数个数为\prod_{i1}^{k}(q_i1)。则n的约数个数为∏i1k​(qi​1)。 2.i*j的约数个数为d(ij) ∑x∣i∑y∣j[gcd(x,y)1]\sum_{x|i}\sum_{y|j}[gcd(x,y)1]∑x∣i​…

C. Greedy Shopping(线段树+复杂度分析)

题目 题意: 有n个商店,每个商店吃一顿饭需要a[i]元,保证a[i]单调不减。现在有q次操作:     操作1:1 x y,表示将区间[1,x]的a[i]变为max(a[i],y);     操作2:2 x y,现在有一个人有y元钱,从x个商店开…

java Throwable

Throwable是所有异常的祖宗类 严格来讲 object才是 但object和所有类都有直接或间接的基础关系 所以 用异常来讲 Throwable才是祖宗类 我们主要看他的几个成员方法 我们先来看 getMessage 参开代码如下 public static void main(String args[]) {int[] arr {1,2};try {System…

D. Graph and Queries(可撤销并查集+启发式合并+set维护)

题目 题意: 给定一张无向图,n个点,m条边。每个点都有点权,点权互不相同,有两种操作。     操作1:1 v,输出v点所在的连通块的点权最大值,并将那个点的权值置为0。     操作2:2 i&#x…

java抛出异常throws

我们先来看一段代码 public class text {public static void main(String args[]) {coldWind();System.out.println("结束");}public static void coldWind() throws ArrayIndexOutOfBoundsException {int[] arr {1,2};System.out.println(arr[2]);} }运行结果如下…

vue keep-alive缓存组件

我们创建一个vue项目 引入一下element ui 然后在src下的components 下应该会有一个HelloWorld.vue 如果没有 那就自己写一个 HelloWorld.vue 参考代码如下 <template><div class"hello"><el-tabs v-model"activeName" type"border-ca…

vue使用keep-alive后组件生命周期的变化

我们指定 keep-alive可以缓存组件 有些我们需要保存用户操作的组件 就需要用keep-alive套起来 之后再次用到他就可以直接在缓存中取 但被套了 keep-alive的组件生命周期也会发生一些变化 我们来给一个用了 keep-alive的组件套入生命周期 beforeCreate 组件开始初始化时执行的…

E. Ehab‘s REAL Number Theory Problem(思维+最小环)

题目 题意&#xff1a; 给定一个序列&#xff0c;这个序列的因子数不超过7个&#xff0c;要求从这个序列里拿出尽可能少的数&#xff0c;使得他们的乘积为完全平方数。无解输出-1。     1≤n≤1e5,1≤a[i]≤1e61≤n≤1e5,1≤a[i]≤1e61≤n≤1e5,1≤a[i]≤1e6 分析&#x…