200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 斯坦福大学iOS应用开发教程学习笔记(第七课)Pad和iPhone的通用程序

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

时间:2019-09-13 02:55:43

相关推荐

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

第七课的主要内容: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> @interfaceRotatableViewController:UIViewController<UISplitViewControllerDelegate> @end

[cpp]view plain copy#import"RotatableViewController.h" #import"SplitViewBarButtonItemPresenter.h" @interfaceRotatableViewController() @end @implementationRotatableViewController -(void)awakeFromNib { [superawakeFromNib]; self.splitViewController.delegate=self; } -(id<SplitViewBarButtonItemPresenter>)splitViewBarButtonItemPresenter { iddetailVC=[self.splitViewController.viewControllerslastObject]; if(![detailVCconformsToProtocol:@protocol(SplitViewBarButtonItemPresenter)]){ detailVC=nil; } returndetailVC; } -(BOOL)splitViewController:(UISplitViewController*)svc shouldHideViewController:(UIViewController*)vc inOrientation:(UIInterfaceOrientation)orientation { return[selfsplitViewBarButtonItemPresenter]?UIInterfaceOrientationIsPortrait(orientation):NO; } -(void)splitViewController:(UISplitViewController*)svc willHideViewController:(UIViewController*)aViewController withBarButtonItem:(UIBarButtonItem*)barButtonItem forPopoverController:(UIPopoverController*)pc { barButtonItem.title=self.title; [selfsplitViewBarButtonItemPresenter].splitViewBarButtonItem=barButtonItem; } -(void)splitViewController:(UISplitViewController*)svc willShowViewController:(UIViewController*)aViewController invalidatingBarButtonItem:(UIBarButtonItem*)barButtonItem { <prename="code"class="cpp">[selfsplitViewBarButtonItemPresenter].splitViewBarButtonItem=nil;</pre>}-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation{returnYES;}@end

4、设置HappinessViewController

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

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

点住Happiness View controller的黄色按钮,再按住conrtol按钮拖到view上,选择faceView。

现在运行看下效果:

运行正常。

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

5、关联幸福度

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

[cpp]view plain copy-(HappinessViewController*)splitViewHappinessViewController { idhvc=[self.splitViewController.viewControllerslastObject]; if(![hvcisKindOfClass:[HappinessViewControllerclass]]){ hvc=nil; } returnhvc; } -(void)setAndShowDiagnosis:(int)diagnosis { self.diagnosis=diagnosis; if([selfsplitViewHappinessViewController]){ [selfsplitViewHappinessViewController].happiness=diagnosis; }else{ [selfperformSegueWithIdentifier:@"ShowDiagnosis"sender:self]; } } 这样就ok了。

6、添加UIToolbar

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

添加一个protocol

新建protocol

SplitViewBarButtonItemPresenter

[cpp]view plain copy#import<UIKit/UIKit.h> @protocolSplitViewBarButtonItemPresenter<NSObject> @property(nonatomic,strong)UIBarButtonItem*splitViewBarButtonItem; @end

HappinessViewController .h

[cpp]view plain copy#import<UIKit/UIKit.h> #import"SplitViewBarButtonItemPresenter.h" @interfaceHappinessViewController:UIViewController<SplitViewBarButtonItemPresenter> @property(nonatomic)inthappiness;//0issad;100isveryhappy @end

HappinessViewController实现协议。

[cpp]view plain copy#import"HappinessViewController.h" #import"FaceView.h" @interfaceHappinessViewController()<FaceViewDataSource> @property(nonatomic,weak)IBOutletFaceView*faceView; @property(nonatomic,weak)IBOutletUIToolbar*toolbar; @end @implementationHappinessViewController @synthesizehappiness=_happiness; @synthesizefaceView=_faceView; @synthesizesplitViewBarButtonItem=_splitViewBarButtonItem; @synthesizetoolbar=_toolbar; -(void)setSplitViewBarButtonItem:(UIBarButtonItem*)splitViewBarButtonItem { if(_splitViewBarButtonItem!=splitViewBarButtonItem){ NSMutableArray*toolbarItems=[self.toolbar.itemsmutableCopy]; if(_splitViewBarButtonItem){ [toolbarItemsremoveObject:_splitViewBarButtonItem]; } if(splitViewBarButtonItem){ [toolbarItemsinsertObject:splitViewBarButtonItematIndex:0]; } self.toolbar.items=toolbarItems; _splitViewBarButtonItem=splitViewBarButtonItem; } } //.......

运行,看下效果:

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

这是跟着视频做好的代码/detail/totogo/4927845

容芳志 (/totogo)

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

原文地址:/totogo/article/details/8434471

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。