这节课主要讲如何在一个程序里适配iPad 和iPhone。
内容简介 1、UIToolbar上面放的都是UIbarbuttonItem可以参考iOS学习之UINavigationController详解与使用(三)ToolBar
这节课的Demo是把UIToolbar拖放到iPad的故事版的顶部来使用。
2、UISplitVIEwController UISplitVIEwController只能在iPad的storyboard使用。
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的通用程序所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)