斯坦福大学iOS应用开发教程学习笔记(第七课)Pad和iPhone的通用程序

斯坦福大学iOS应用开发教程学习笔记(第七课)Pad和iPhone的通用程序,第1张

概述第七课的主要内容:iPad 和iPhone的通用程序 这节课主要讲如何在一个程序里适配iPad 和iPhone。 内容简介 1、UIToolbar上面放的都是UIBarButtonItem 可以参考iOS学习之UINavigationController详解与使用(三)ToolBar 这节课的Demo是把UIToolbar拖放到iPad的故事版的顶部来使用。 2、UISplitViewContro 第七课的主要内容:iPad 和iPhone的通用程序

这节课主要讲如何在一个程序里适配iPad 和iPhone。

内容简介 1、UIToolbar上面放的都是UIbarbuttonItem

可以参考iOS学习之UINavigationController详解与使用(三)ToolBar

这节课的Demo是把UIToolbar拖放到iPad的故事版的顶部来使用。

2、UISplitVIEwController

UISplitVIEwController只能在iPad的storyboard使用。

3、UISplitVIEwControllerDelegate

Showing and HIDing VIEw Controllers

– splitVIEwController:shouldHIDeVIEwController:inorIEntation: – splitVIEwController:willHIDeVIEwController:withbarbuttonItem:forPopoverController: – splitVIEwController:willShowVIEwController:invalIDatingbarbuttonItem: – splitVIEwController:popoverController:willPresentVIEwController: 这几个代理方法会用到。

有了这些理论知识后,

开始Demo

先得有上节课的材料:Psychologist.zip 的程序。把这个项目下载下来,打开。

在开始弄iPad之前,先解决下下面这个BUG.

在前面的课程都是用的iPhone的项目。这次打开源码后,运行时选择模拟器选择iPad。运行后


按command+ ->改变模拟器的方向,上面的的button显示不大好看,改一下 spring&structs。



这样在app水平放下时按钮自动缩放了。

开始通用程序的修改吧

1、修改项目设置为Universal。

打开项目targets


把原来的MainStoryboard.storyboard改名成:iPhone.storyboard。

对应的targets也改成iPhone.storyboard。

新建一个iPad.storyboard,targets里添加iPad.storyboard。

2、在iPad.storyboard拖放一个UISplitVIEwController。

iPad.storyboard里是一片空白,放进去UISplitVIEwController好大个家伙。

后面的table vIEw controller不需要,删掉。

3、新建RotatableVIEwController

新建RotatableVIEwController之后,把iPhone storyboard里的Psychologist界面拷到iPad.storyboard

然后在navigation Controller上按住control拖到 Psychologist界面上,选择relationship 为root vIEw。

把对应的Dr.Pill 和Dr. Freud都拷过来,从两个按钮那拖过来选push方式。

把Psychologist的界面的class设置为:RotatableVIEwController

RotatableVIEwController的代码如下:

[cpp]  view plain copy #import <UIKit/UIKit.h>      @interface RotatableVIEwController : UIVIEwController<UISplitVIEwControllerDelegate>   @end  

copy #import "RotatableVIEwController.h"   #import "SplitVIEwbarbuttonItemPresenter.h"      @interface RotatableVIEwController ()   @end   @implementation RotatableVIEwController   - (voID)awakeFromNib   {       [super awakeFromNib];       self.splitVIEwController.delegate = self;   }   - (ID <SplitVIEwbarbuttonItemPresenter>)splitVIEwbarbuttonItemPresenter       ID detailVC = [self.splitVIEwController.vIEwControllers lastObject];       if (![detailVC conformstoprotocol:@protocol(SplitVIEwbarbuttonItemPresenter)]) {           detailVC = nil;       }       return  detailVC;   }   - (BOol)splitVIEwController:(UISplitVIEwController *)svc      shouldHIDeVIEwController:(UIVIEwController *)vc                 inorIEntation:(UIInterfaceOrIEntation)orIEntation   {   return [self splitVIEwbarbuttonItemPresenter] ? UIInterfaceOrIEntationIsPortrait(orIEntation) :NO;   }    voID)splitVIEwController:(UISplitVIEwController *)svc        willHIDeVIEwController:(UIVIEwController *)aVIEwController             withbarbuttonItem:(UIbarbuttonItem *)barbuttonItem          forPopoverController:(UIPopoverController *)pc       barbuttonItem.Title = self.Title;       [self splitVIEwbarbuttonItemPresenter].splitVIEwbarbuttonItem = barbuttonItem;          -(     willShowVIEwController:(UIVIEwController *)aVIEwController    invalIDatingbarbuttonItem:(UIbarbuttonItem *)barbuttonItem   <pre name="code" class="cpp">    [self splitVIEwbarbuttonItemPresenter].splitVIEwbarbuttonItem = nil;</pre>}- (BOol)shouldautorotatetoInterfaceOrIEntation:(UIInterfaceOrIEntation)toInterfaceOrIEntation{    return YES;}@end   4、设置HappinessVIEwController

把iPad.storyboard上最大的detail 的controller设置它的class为HappinessVIEwController。

再拖放一个空白的vIEw到上面去,选择vIEw,设置vIEw的class为FaceVIEw。

点住Happiness VIEw controller的黄色按钮,再按住conrtol按钮拖到vIEw上,选择faceVIEw。

现在运行看下效果:


运行正常。

不过现在还没有和它的幸福度关联起来。

5、关联幸福度

在PsychologistVIEwController.m文件里修改添加如下:

copy - (HappinessVIEwController *)splitVIEwHappinessVIEwController       ID hvc = [self.splitVIEwController.vIEwControllers lastObject];   if
 (![hvc isKindOfClass:[HappinessVIEwController class]]) {  
        hvc = nil;   return hvc;   - (voID)setAndShowDiagnosis:(int)diagnosis       self.diagnosis = diagnosis;   if ([self splitVIEwHappinessVIEwController]) {           [self splitVIEwHappinessVIEwController].happiness = diagnosis;       }else{           [self performSegueWithIDentifIEr:@"ShowDiagnosis" sender:self];       }   }   这样就ok了。

6、添加UIToolbar

在iPad.storyboard大大的vIEw的最上面拖放一UIToolbar,把item删掉。关联代码里的toolbar 。

添加一个protocol

新建protocol 

SplitVIEwbarbuttonItemPresenter

copy @protocol SplitVIEwbarbuttonItemPresenter <NSObject>   @property (nonatomic, strong) UIbarbuttonItem *splitVIEwbarbuttonItem;   @end  


HappinessVIEwController .h

copy @interface HappinessVIEwController : UIVIEwController<SplitVIEwbarbuttonItemPresenter>   @property (nonatomic) int happiness;  // 0 is sad; 100 is very happy   @end  

HappinessVIEwController实现协议。

copy #import "HappinessVIEwController.h"   #import "FaceVIEw.h"   @interface HappinessVIEwController() <FaceVIEwDataSource>   @property (nonatomic, weak) IBOutlet FaceVIEw *faceVIEw;   @end   @implementation HappinessVIEwController   @synthesize happiness = _happiness;   @synthesize faceVIEw = _faceVIEw;   @synthesize splitVIEwbarbuttonItem = _splitVIEwbarbuttonItem;   @synthesize toolbar = _toolbar;   voID)setSplitVIEwbarbuttonItem:(UIbarbuttonItem *)splitVIEwbarbuttonItem   if (_splitVIEwbarbuttonItem != splitVIEwbarbuttonItem) {           NSMutableArray *toolbaritems = [self.toolbar.items mutablecopy];           if (_splitVIEwbarbuttonItem) {               [toolbaritems removeObject:_splitVIEwbarbuttonItem];           }           if (splitVIEwbarbuttonItem) {               [toolbaritems insertObject: splitVIEwbarbuttonItem atIndex:0 ];           }           self.toolbar.items = toolbaritems;           _splitVIEwbarbuttonItem = splitVIEwbarbuttonItem;   //.......  

运行,看下效果:

 


看到toolbar了,可以点它展开左边的栏。可以按 command+ 方向键来跳转模拟器的放下看效果。

这是跟着视频做好的代码 http://download.csdn.net/detail/totogo2010/4927845

容芳志 (http://blog.csdn.net/totogo2010)

本文遵循“署名-非商业用途-保持一致”创作公用协议

原文地址:http://blog.csdn.net/totogo2010/article/details/8434471

总结

以上是内存溢出为你收集整理的斯坦福大学iOS应用开发教程学习笔记(第七课)Pad和iPhone的通用程序全部内容,希望文章能够帮你解决斯坦福大学iOS应用开发教程学习笔记(第七课)Pad和iPhone的通用程序所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1088631.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存