iOS Storyboard全解析
5-故事版与多场景

●场景(Scene):在故事板中,场景是指一个单一视图 控制器和视图。
●场景过渡(Segue):Segue在两个场景之间和管理两个 场景之间的过渡。在故事板中提供了多种Segue类型。
2、 UIStoryboard
A UIStoryboard object encapsulates the view controller graph stored in an Interface Builder storyboard resource file. This view controller graph represents the view controllers for all or part of your application’s user interface. Normally, view controllers in a storyboard are instantiated and created automatically in response to actions defined within the storyboard itself. However, you can use a storyboard object to instantiate the initial view controller in a storyboard file or instantiate other view controllers that you want to present programmatically.
用代码实现导航控制 中的“返回”功能
5、Segue的几种类型
Iphone中:push,modal,custom三种不同的类型。
Ipad中: push,modal,popover,replace和custom五 种类型。
iOS开发教程:Storyboard全解析

- (void)playerDetailsViewControllerDidSave:(PlayerDetailsViewController *)controller{[self dismissViewControllerAnimated:YES completion:nil];}⽬前这个代理⽅法只能够跳转到这个新的场景中,接下来我们来让他做⼀些更为强⼤的事情。
iOS 5 SDK中新添加的dismissViewControllerAnimated:completion: ⽅法可以被⽤来关闭⼀个场景。
最后还有⼀件事情需要做,就是Players场景需要告诉PlayerDetailsVC他的代理在哪⾥,听上去这种⼯作在故事版编辑其中⼀拖就⾏了,实际上,你得使⽤代码才能完成。
将以下⽅法加⼊到 PlayersViewController 中- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{if ([segue.identifier isEqualToString:@"AddPlayer"]){UINavigationController *navigationController =segue.destinationViewController;PlayerDetailsViewController*playerDetailsViewController =[[navigationController viewControllers]objectAtIndex:0];playerDetailsViewController.delegate = self;}}当使⽤Segue的时候,就必须加⼊这个名叫 prepareForSegue 的⽅法,这个新的ViewController在被加载的时候还是不可见的,我们可以利⽤这个机会来向他发送数据。
Storyboard的简单使用

Storyboard的简单使用之前做的例子,我们经常会用到.xib文件,在其中我们可以进行界面的设计。
不过如果想切换视图,我们就得自己写很多代码。
自从苹果推出了Storyboard,我们可以在一个编辑区域设计多个视图,并通过可视化的方法进行各个视图之间的切换。
如下图:上图中有两种箭头:左边的箭头表示程序刚开始运行时加载的控制器;右边的称为Segue,这个表示视图之间的切换,或者表示连接Navigation Controller 的Root View Controller。
Storyboard功能强大,通过它不仅可以单独设计每一个视图,还能很简单地实现各个视图之间的切换。
接下来的例子主要显示Storyboard的功能,顺便用Storyboard实现了静态表格等功能。
为了显示Storyboard的功能,我们从Empty Application开始我们的例子。
1、运行Xcode 4.2,新建一个Empty Application,名称为Storyboard Test:2、打开AppDelegate.m,找到didFinishLaunchingWithOptions方法,删除其中代码,使得只有return YES;语句。
3、创建一个Storyboard:在菜单栏依次选择File —New —New File,在弹出的窗口,左边选择iOS 组中的User Interface,右边选择Storyboard:之后单击Next,选择Device Family为iPhone,单击Next,输入名称MainStoryboard,并设好Group:单击Create,这样就创建了一个Storyboard。
4、配置程序,使得从MainStoryboard启动:先单击左边带蓝色图标的Storyboard Test,然后选择Summary,接下来在Main Storyboard中选择MainStoryboard:这样,当运行程序时,就从MainStoryboard加载内容了。
iOS开发之绝对布局和相对布局

iOS开发之绝对布局和相对布局之前如果做过Web前端页面的小伙伴们,看到绝对定位和相对定位并不陌生,并且使用起来也挺方便。
在IOS的UI设计中也有绝对定位和相对定位,和我们的web前端的绝对定位和相对定位有所不同但又有相似之处。
下面会结合两个小demo来学习一下我们IOS开发中UI的绝对定位和相对定位。
在前面所用到的UI事例用的全是绝对定位,用我们Storyboard拖拽出来的控件全是绝对定位的,就是我们可以同改变组件的frame来改变组件的位置和大小。
而相对定位则不同,相对定位是参考组件周围的元素来确定组件的大小或位置,相对定位即约束和周围组件的距离来布局的,即layoutConstraint. 在布局中LayoutConstraint和Fram布局方式是不能并存的。
上面说了这么多了,可能说的不太明白,还是那句话,怎么能少的了代码和实例的支持呢,下面会通过屏幕适配的事例来用绝对布局和相对布局同时实现下面的描述效果。
我们要实现的效果:当上面的view的大小及位置改变时,为了不覆盖掉下面的view,我们同时要改变下view的位置。
或者说在我们4.0寸正常显示的内容,在3.5寸屏上也能正常显示,即通常我们所说的屏幕的适配。
为了便于观察效果,我们可以用Slider控件来动态的改变上面view的大小,观察下面view的位置变化,下面是我们要实现的效果图:1.用绝对布局来实现上述效果,为了节省我们代码编写的时间,上面的控件是通过storyborad来实现的,然后在对应的ViewController里添加组件和控件回调的方法,主要是在slider滑动的时候来获取slider的值,然后动态的设置上面View的frame坐标(当然,如果让view往四周扩展得计算一下新的fram的值,然后动态的修改),上面的view位置和大小改变了,那么下面的view不能被上面的覆盖掉,所以也得修改blackView的fram的值。
StoryBoard和代码结合 按比例快速兼容iPhone6 - 6 Plus教程

编者注:根据网友们的评论,文章中的方法有很大的局限性,请谨慎使用!现在由于苹果公司出了6和6Plus,让写苹果程序的哥们为了做兼容很头疼。
用StoryBoard固然方便,但是后期做兼容要花费太多的时间和精力。
使用AutoLayout虽然会在不同尺寸的屏幕下自动布局,但是很多东西还是要自己手动修改,而且使用AutoLayout的话有一个弊病,就是无法通过代码来修改StoryBoard上控件的尺寸和位置。
使用纯代码搭建界面又会觉得不够直观,要花时间调整布局,虽然方便后期做调整兼容性,但是影响开发效率。
当然个人觉得还是代码和StoryBoard结合的方式比较方便。
先说下使用本方法的要求,首先iPhone5的界面一定要完全兼容,这样才能完美兼容6和6Plus。
首先,我么我们要观察一下5,6和6Plus 的尺寸比例关系。
发现了他们的关系后待会做兼容就明白了。
很明显能看出这三种屏幕的尺寸宽高比是差不多的,因此可以在5的基础上,按比例放大来兼容6和6Plus的屏幕。
在AppDelegate.h中@propertyfloatautoSizeScaleX;@propert yfloatautoSizeScaleY;在AppDelegate.m中#defineScreenHeight[[UIScreenmainScre en]bounds].size.height//获取屏幕高度,兼容性测试#defineScreenWidth[[UIScreenmainScree n]bounds].size.width//获取屏幕宽度,兼容性测试-(BOOL)application:(UIApplication*)applic ationdidFinishLaunchingWithOptions:(NS Dictionary*)launchOptions{AppDelegate* myDelegate=[[UIApplicationsharedApplica tion]delegate];if(ScreenHeight>480){myDe legate.autoSizeScaleX=ScreenWidth/320;myDelegate.autoSizeScaleY=ScreenHeight/ 568;}else{myDelegate.autoSizeScaleX=1.0; myDelegate.autoSizeScaleY=1.0;}}因为iPhone4s屏幕的高度是480,因此当屏幕尺寸大于iPhone4时,autoSizeScaleX和autoSizeScaleY即为当前屏幕和iPhone5尺寸的宽高比。
iOS 如何使用 LaunchScreen.storyboard 设置启动图片(闪屏图)

iOS 如何使用 LaunchScreen.storyboard 设置启动图片(闪屏图)本文以通过 cocos2dx 搭建的项目为例(因为目前通过xcode新建的项目都自动配置了启动图,而通过 cocos2dx 新建就没有,游戏研发里最常见),可以看到新建工程目录中默认是没有xcassets文件和LaunchScreen.storyboard文件的如果没有进行启动图的设置,在项目中通过[UIScreen mainScreen].bounds获取设备屏幕尺寸是不准确的,我用iPhone 6S做测试,始终获取到值是 568x320px,正确的应该是 667x375px,至于具体会出现什么异常情况就不进行介绍,相信遇到这个问题的人自然就明白,我这边是做SDK开发,SDK里面通过UIWindow自定义了弹窗并通过[UIScreen mainScreen].bounds的值对弹窗进行屏幕的适配,下面是我这里遇到的情况如图:SDK接入游戏之前的正常情况(测试设备:iPhone 6s):SDK接入游戏后的异常情况(测试设备:iPhone 6s):明显这个弹出窗口是不一样了或者读者可以自行新建一个 Single View Application 工程,然后把里面的LaunchScreen.storyboard 文件删除掉,然后启动工程看看有什么情况。
那么,下面主要是介绍解决办法:1. 首先在Resources目录下新建一个LaunchScreen.storyboard文件然后你会看到下面这样2. 把 view 里面的两个控件(Label 和 gameDemo)删掉,然后拖进一个UIImageView,并添加约束3. 然后设置你的启动图片,无论你的工程是支持什么方向,这里都以 Portrait 方向来设置,图片也是 Portrait 方向的,如果你的工程只支持横屏,在启动的时候图片会自动进行旋转4. 配置 Launch Screen File,选择你刚新建好的storyboard文件上好。
iOS如何使用LaunchScreen.storyboard设置启动图片(闪屏图)

iOS如何使⽤LaunchScreen.storyboard设置启动图⽚(闪屏图)iOS 如何使⽤ LaunchScreen.storyboard 设置启动图⽚(闪屏图)本⽂以通过 cocos2dx 搭建的项⽬为例(因为⽬前通过xcode新建的项⽬都⾃动配置了启动图,⽽通过 cocos2dx 新建就没有,游戏研发⾥最常见),可以看到新建⼯程⽬录中默认是没有xcassets⽂件和LaunchScreen.storyboard⽂件的如果没有进⾏启动图的设置,在项⽬中通过[UIScreen mainScreen].bounds获取设备屏幕尺⼨是不准确的,我⽤iPhone 6S做测试,始终获取到值是 568x320px,正确的应该是 667x375px,⾄于具体会出现什么异常情况就不进⾏介绍,相信遇到这个问题的⼈⾃然就明⽩,我这边是做SDK开发,SDK⾥⾯通过UIWindow⾃定义了弹窗并通过[UIScreen mainScreen].bounds的值对弹窗进⾏屏幕的适配,下⾯是我这⾥遇到的情况如图:SDK接⼊游戏之前的正常情况(测试设备:iPhone 6s):SDK接⼊游戏后的异常情况(测试设备:iPhone 6s):明显这个弹出窗⼝是不⼀样了或者读者可以⾃⾏新建⼀个 Single View Application ⼯程,然后把⾥⾯的LaunchScreen.storyboard ⽂件删除掉,然后启动⼯程看看有什么情况。
那么,下⾯主要是介绍解决办法:1. ⾸先在Resources⽬录下新建⼀个LaunchScreen.storyboard⽂件然后你会看到下⾯这样2. 把 view ⾥⾯的两个控件(Label 和 gameDemo)删掉,然后拖进⼀个UIImageView,并添加约束3. 然后设置你的启动图⽚,⽆论你的⼯程是⽀持什么⽅向,这⾥都以 Portrait ⽅向来设置,图⽚也是 Portrait ⽅向的,如果你的⼯程只⽀持横屏,在启动的时候图⽚会⾃动进⾏旋转4. 配置 Launch Screen File,选择你刚新建好的storyboard⽂件上好。
ios 页面之间跳转的几种方式

一、介绍iOS 页面之间的跳转是移动应用开发中的重要部分,开发者需要了解不同的跳转方式并选择合适的方式来实现应用的功能。
本文将介绍iOS 页面之间跳转的几种方式,并分析它们的优缺点。
二、使用 Storyboard 实现页面跳转1. 使用 Segue 实现页面跳转Segue 是 iOS 中用于页面跳转的技术之一,使用 Segue 可以在Storyboard 中直观地连接两个页面,并在跳转时自动处理页面的初始化和传递数据。
优点:使用 Segue 可以直接在 Storyboard 中进行页面之间的连接,非常方便。
通过设置 Segue 的 Identifier 可以在代码中方便地进行跳转。
缺点:Segue 的使用受限于 Storyboard,不够灵活。
在需要动态生成页面或根据条件来决定跳转方式时,使用 Segue 可能就不够灵活。
2. 使用 presentViewController 实现页面跳转presentViewController 是 UIViewController 中用于弹出新页面的方法,通过调用presentViewController 可以在当前页面上弹出新页面。
优点:presentViewController 是比较灵活的页面跳转方式,可以在代码中动态地决定跳转的目标页面,并且可以通过指定动画效果来实现特殊的跳转效果。
缺点:使用 presentViewController 需要在代码中手动处理目标页面的初始化和数据的传递,相对繁琐一些。
三、使用 Navigation Controller 实现页面跳转1. 使用 pushViewController 实现页面压栈跳转Navigation Controller 是 iOS 中用于管理页面栈的控制器,通过调用 pushViewController 可以将新页面压栈到当前页面的上方,实现页面的跳转。
优点:使用 Navigation Controller 可以实现简单的页面堆栈管理,可以方便地进行页面间的前进和后退。
产品经理 storyboard 要素

在创建产品经理的故事板(Storyboard)时,需要考虑以下要素:
1. 角色(Actors):确定故事板中涉及的所有关键角色,例如用户、产品经理、设计师、开发人员等。
2. 场景(Scenes):描述产品使用的具体情境,包括环境、设备、时间等因素。
3. 任务(Tasks):明确用户在使用产品时需要完成的任务,以及产品经理和团队需要实现的功能。
4. 交互(Interactions):描述用户与产品之间的互动,包括用户操作、系统反馈等。
5. 情感(Emotions):考虑用户在使用产品过程中的情感变化,以便优化用户体验。
6. 痛点(Pain Points):识别用户在使用过程中可能遇到的问题和挑战,以便解决这些问题。
7. 触点(Touchpoints):确定用户与产品接触的关键节点,例如登录、注册、购买等。
8. 数据(Data):收集和分析用户行为数据,以便优化产品功能和提高用户体验。
9. 反馈(Feedback):获取用户对产品的意见和建议,以便持续改进产品。
10. 结果(Outcomes):评估故事板中描述的情境和任务是否达到了预期的目标,以及产品是否满足了用户需求。
storyboard教程节选

欢迎窗口
科 当你第一次打开 Storyboard 的时候,软件会显示欢迎窗口。 画 ·双击 ToonBoom Storyboard 的图标 。 北京迪生北动京迪生动画科技有限公司 ·ToonBoom Storyboard 打开欢迎窗口。(见图 2-1 )
北京迪生动画科技有限公技司有限公司 (图2-5) 科 Duration and frames 持续时间 帧数
Shots 镜头
画 Transitions 转场 动 Panels 分解镜头
Caption display 说明显示
生 Caption menu 说明菜单 迪 2.1.1.3 库标签(Library Tab)
新建故事板 打开故事板
最近故事板 存储故事板 删除没有用到的文件 输出到影片 输出到 PDF 输出当前图像 输出到
司 位图
EDL > AAF 文件
公 Toonboom 文件
Csv 文件
限 退出程序 技有 编辑菜单(Edit Menu)
编辑菜单执行撤消、重做等操作。它的一些命令也可以通过编辑工具条和声音工具
Slugging 简短说明 Notes 备注
播放上一个声音注解
停止播放
司 播放声音注解 公 播放下一个声音注解 限 录制声音注解 有 删除当前声音注解 技 显示 > 隐藏注解
说明菜单
科 2.1.1.2 故事板标签(Storyboard Tab) 画 故事板标签显示当前故事板信息。诸如时间长度、镜头数目、分解镜头和转场。(见图 北京迪生北动京迪生动画科技有限公司 2-5)
专家提示:使用平移工具 时候,点击鼠标中键,可以完成放缩操作。使用放缩工 具时,鼠标左键点击放大,按住 Alt 键并点击左键,可以缩小视图。
在iOS 7中使用storyboard(part 1)

在iOS 7中使用storyboard(part 1)感谢翻译小组成员heartasice热心翻译。
如果您有不错的原创或译文,欢迎提交给我们,更欢迎其他朋友加入我们的翻译小组(联系qq:2408167315)。
===================================================== =====================================Storyboard是一项令人兴奋的功能,在iOS5中首次推出,在开发app的界面时可以极大地节省时间。
如下图所示,这就是一个完整的应用的storyboard,接下来我们要学习如何通过这种方式创建应用。
现在你可能还不是很精确地知道我们的应用可以做什么,但是通过上图,我们可以很清晰的明白这些视图之间的关系。
这就是使用storyboard的强大之处。
当你的应用有许多不同页面的时候,通过使用storyboard,可以大大减少页面之间跳转的代码。
过去我们为每个视图控制器创建一个nib文件,现在,只需要使用一个storyboard,它包含了你应用中所有的视图控制器以及它们之间的关系。
相比传统的nib文件,storyboard有很多优点:1.使用storyboard,可以更好地理解应用中所有视图在概念上的概览以及它们之间的关系。
掌控所有的视图变得很容易,因为所有的设计都是在一个文件中,而不是在很多单独的nib 文件中。
2.storyboard描述了视图之间的动画,这些动画叫做"segues"你可以很容易的通过从一个视图控制器(点ctrl-dragging)拖拽到另一个来实现,感谢"segues"让我们不需要写代码去控制页面跳转了。
3.storyboard通过新的cell原型,以及静态cell的特性,让表格控制器实现起来更容易了。
你近乎可以完全的通过storyboard来设计你的表格控制器,这也大大的减少了你不得不写的代码量。
苹果软件开发基础05-storyboard

MainStoryboard.storyboard 只是画面面 ViewController.h 及 ViewController.m 是程序 在 ViewController.h 中定义
@interface ViewController : UIViewController { // define the name of View IBOutlet UIImageView* backgroundImageView; IBOutlet UIButton* changeBackgroundBtn; int backgroundImageIndex; } -(IBAction)clickChangeBackground;
4
建立立第一一只程序 (3/10)
"
输入项目名称 (其实也是这个专案的档名) 以 及公司识别名称,使用 Storyboards
5建立立第一一只程序 (4/ Nhomakorabea0)"
选择存档地点
6
建立立第一一只程序 (5/10)
"
存盘后,我们就可以看到所建立的项目
7
建立立第一一只程序 (6/10)
"
注意左边的 7 种Navigator
9
建立立第一一只程序 (8/10)
"
MainStoryboard.storyboard
"
增加一个 Image View
10
建立立第一一只程序 (9/10)
"
MainStoryboard.storyboard
"
Image View 连到 cake1.jpg
11
建立立第一一只程序 (10/10)
学会使用Storyboard进行iOS界面设计开发

学会使用Storyboard进行iOS界面设计开发第一章:介绍iOS界面设计开发iOS界面设计开发是开发iOS应用程序的重要组成部分。
在开发过程中,使用Storyboard是一种常见的方式来设计和组织应用程序的用户界面。
本章将介绍iOS界面设计开发的基本概念和Storyboard的作用。
iOS界面设计开发是指创建和设计用户界面以实现用户与应用程序的交互。
在iOS开发中,使用Storyboard可以方便地在一个视图控制器中创建和连接多个视图,从而构建应用程序的界面。
Storyboard是一种可视化界面设计工具,可以在其中添加和管理多个视图控制器,并定义它们之间的转换和导航关系。
通过拖拽和连接不同的视图控件,开发人员可以直观地设计和调整应用程序的界面布局。
第二章:使用Storyboard创建视图控制器使用Storyboard创建视图控制器是iOS界面设计开发的第一步。
在Xcode中,选择新建项目,选择单视图应用模板,并勾选使用Storyboard选项。
然后,在Main.storyboard文件中,可以看到一个默认的视图控制器。
通过拖拽和连接功能区的视图控件,可以自由地设计视图控制器的布局。
可以调整视图控件的位置、大小、颜色等属性,以及添加和删除新的视图控件。
要添加新的视图控制器,可以在左侧的对象库中选择所需的控制器,并拖拽到Storyboard的场景中。
然后,通过连接不同的视图控件和导航控制器,可以定义视图控制器之间的转换和导航关系。
第三章:使用Storyboard创建导航和控制器在iOS应用程序中,导航和控制器是实现不同视图之间切换和导航的重要方式。
使用Storyboard可以方便地创建导航栏、标签栏和分段控件等导航和控制器相关的组件。
要创建导航栏,可以在场景中选择导航控制器,并设置为初始视图控制器。
然后,在视图控制器中添加导航栏,可以选择添加导航栏按钮和标题等。
要创建标签栏,可以选择标签控制器,并设置为初始视图控制器。
storyBoard学习教程一(页面跳转)

storyBoard学习教程⼀(页⾯跳转)今天为了给伙伴作⼀篇storyBoard快速编程的教程,所以才写下了这篇博客。
有过storyBoard 编程经验的伙伴还是不要阅读本篇博客了,我⾃⼰认为,太基础太简单了,为了⽅便别⼈学习使⽤,我还是详细的做了这篇教程。
不怕⾟苦,不怕被别⼈贬低,就怕⾃⼰不能够成长。
不废话,开始以上是使⽤ storyBoard 编程的时候,我们的Xcode的样⼦,下⾯进⾏说明(编号于图上的编号⼀⼀对应):1、storyBoard ⽂件的启动图页,可以在⼯程的配置⽂件夹 general ⾥⾯设置启动图为 LaunchScreen 如下图所⽰。
在编号18处选择如图,在对应的LaunchScreen.storyBoard ⽂件⾥,从编号为15(先选中编号为15的按钮)然后在下⾯的区域,选择⼀个 UIImageView 控件,如图A 所⽰。
将控件拖动到我们的控制⾯板中,如图B所⽰。
2、Main.storyboard 就是我们的App默认的启动页⾯,对应的⼯程配置⽂件如下图所⽰:3、就是 UIVIewController 代表这我们这个 storyBoard ⽂件是个什么类型的⽂件,可以是 UITableViewController 等等之类的,我们分别建⼀个 UIViewController 、UITableViewController 的 storyBoard ⽂件,如下图所⽰:4、我们要说⼀下这⾥⼀些图标的意思:File’s owner 是所有nib ⽂件的图标,表⽰是从磁盘加载nib⽂件的对象。
First Responder 就是⽤户当前正在与之交互的对象。
View 显⽰⽤户界⾯,完成⽤户交互,是UIView类或⼦类5、就是该ViewController 通常设置代理的时候,可能需要⽤到,如,我们在 storyBoard.storyboard ⽂件⾥添加⼀张表UItableViwe 然后设置表的代理为该视图控制器(以下做法等同于代码设置UItableView 的代理)第⼀步:我们点开上⾯创建好的 StoryBoard.storyboard ⽂件是长这个样⼦的6、就是⽤户当前正在与之交互的对象。
总结IOS界面间跳转的几种方法

总结IOS界⾯间跳转的⼏种⽅法注意:下⾯以FirstViewController(FVC)的按钮button点击后跳转到SecondViewController(SVC)为例说明:⽅式⼀:Storyboard的segues⽅式⿏标点击按钮button然后按住control键拖拽到SVC页⾯,在弹出的segue页⾯中选择跳转模式即可优点:操作⽅便,⽆代码⽣成,在storyboard中展⽰逻辑清晰缺点:页⾯较多时不⽅便查看,团队合作时可维护性差, 多⼈合作时不建议使⽤这种⽅式。
⽅式⼆:选项卡UITabBarController控制器通过调⽤UITabBarController的addChildViewController⽅法添加⼦控制器,代码实例如下:UITabBarController *tabbarVC = [[ UITabBarController alloc ] init ];FirstViewController *FVC = [[FirstViewController ] init ];FVC.tabBarItem.title = @"控制器1" ;FVC.tabBarItem.image = [ UIImage imageNamed : @"first.png" ];SecondViewController *SVC = [[SecondViewController ] init ];SVC.tabBarItem.title = @"控制器2" ;SVC. tabBarItem.image = [UIImage imageNamed : @"new.png" ];// 添加⼦控制器(这些⼦控制器会⾃动添加到UITabBarController的 viewControllers 数组中)[tabbarVC addChildViewController :FVC];[tabbarVC addChildViewController :SVC];优点:代码量较少缺点:tabbar的ios原⽣样式不太好看,(不常⽤,⽬前不建议使⽤),如果要使⽤,建议⾃定义tabbar⽅式三:导航控制器UINavigationController在FVC的button的监听⽅法中调⽤:[self.navigationController pushViewController:newC animated:YES]; //跳转到下⼀页⾯在SVC的⽅法中调⽤:[self.navigationController popViewControllerAnimated:YES]; //返回上⼀页⾯当有多次跳转发⽣并希望返回根控制器时,调⽤:[ self .navigationController popToRootViewControllerAnimated: YES ]; //返回根控制器,即最开始的页⾯⽅式四:利⽤ Modal 形式展⽰控制器在FVC中调⽤:[ self presentViewController:SVC animated: YES completion:nil];在SVC中调⽤:[ self dismissViewControllerAnimated: YES completion: nil ];⽅式五:直接更改 UIWindow 的 rootViewController总结:Storyboard⽅式适合个⼈开发⼩程序时使⽤,有团队合作或者项⽬较⼤时不建议使⽤UITabBarController因为⽬前系统的原⽣样式不太美观,不建议使⽤推荐使⽤UINavigationController和Modal,⽆明显缺点,⽽且⽬前⼤部分程序都使⽤这两种⽅式,只是看是否需要导航控制器⽽确定使⽤哪种⽅案好了,以上就是本⽂的全部内容,希望对⼤家开发IOS时有所帮助。
详解iOS应用使用Storyboard布局时的IBOutlet与IBAction

详解iOS应⽤使⽤Storyboard布局时的IBOutlet与IBAction 在图形界⾯编程时,解决的第⼀问题就是如何将静态界⾯与代码关联起来,或者说是代码如何与界⾯上的对象通信, 代码如何操作界⾯上的对象。
在iPhone平台上,引⼊了IBOutlet与IBAction。
通过在变量前增加IBOutlet来说明该变量将与界⾯上的某个UI对象对应,在⽅法前增加IBAction来说明该⽅法将与界⾯上的事件对应.下⾯通过⼀个连接⽹络服务器(NetworkConnection)的例⼦来说明IBOutlet与IBAction。
界⾯上有host 与 port 的Text Field UI对象,⼀个Button对象。
所以代码中需要定义两个IBOutlet变量,分别⽤来定义host与port; ⼀个IBAction⽅法,⽤来发起连接动作。
在NetworkConnectionViewController.h⽂件中:定义变量:复制代码代码如下:@interface NetworkConnectionViewController : UIViewController {UITextField *host;UITextField *port;}将这两个变量说明为IBOutlet变量:复制代码代码如下:@property(nonatomic, retain) IBOutlet UITextField *host;@property(nonatomic, retain) IBOutlet UITextField *port;在NetworkConnectionViewController.m⽂件中增加:复制代码代码如下:@synthesize host;@synthesize port;打开NetworkConnectionViewController.xib⽂件,拖两个Text Field对象到上⾯。
按住Ctrl键,拖拽File's Owner到Text Field之上,会弹出Outlets选择列表,在列表中可以看到host与port。
oc titletextattributes -回复

oc titletextattributes -回复什么是oc titletextattributes?OC titletextattributes 是一种在iOS应用开发中常用的技术,它允许开发者自定义标题文本的属性。
在iOS界面开发中,标题文本通常用于导航栏、标签栏、按钮等控件的显示。
通过使用OC titletextattributes,开发者可以轻松地修改标题文本的字体、颜色、大小等属性,以使应用界面更加个性化和美观。
在开始讨论OC titletextattributes之前,让我们先了解一些基本的iOS 界面开发知识。
iOS界面开发常用的技术有两种,一种是Storyboard,另一种是纯代码编写。
Storyboard是用于创建应用界面的图形化工具,通过拖拽控件和线条连接的方式,可以快速搭建应用的用户界面。
纯代码编写是指通过Objective-C或Swift语言编写代码来创建和修改界面。
而OC titletextattributes 主要是针对纯代码编写的情况,因为在Storyboard中,可以通过属性面板直接修改文本属性。
在纯代码编写界面的情况下,我们需要使用OC titletextattributes 来自定义标题文本的属性。
这可以通过使用NSMutableAttributedString类来实现,该类允许我们在同一个字符串中设置不同的字体、颜色、大小等属性。
首先,我们需要创建一个NSMutableAttributedString对象,并设置默认的标题文本属性。
例如,我们可以设置字体为HelveticaNeue-Bold,颜色为黑色,大小为20。
objective-cNSMutableAttributedString *titleText = [[NSMutableAttributedString alloc] initWithString:@"标题文本"]; [titleText addAttribute:NSFontAttributeName value:[UIFont fontWithName:@"HelveticaNeue-Bold" size:20.0]range:NSMakeRange(0, titleText.length)];[titleText addAttribute:NSForegroundColorAttributeName value:[UIColor blackColor] range:NSMakeRange(0,titleText.length)];接下来,我们可以通过添加额外的属性来自定义标题文本的外观。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
iOS Storyboard全解析来源:/blog/1493956Storyboard)是一个能够节省你很多设计手机App界面时间的新特性,下面,为了简明的说明Storyboard的效果,我贴上本教程所完成的Storyboard的截图:现在,你就可以清楚的看到这个应用究竟是干些什么的,也可以清楚的看到其中的各种关系,这就是Storyboard的强大之处了。
如果你要制作一个页面很多很复杂的App,Storyboard可以帮助你解决写很多重复的跳转方法的麻烦,节省很多时间,以便你能够完全的专注于核心功能的实现上。
开始首先启动Xcode,新建一个工程,我们在这里使用Single View App Template,这个模板会提供一个类和一个Storyboard,免去我们自己创建的麻烦。
创建完成之后,Xcode的界面大概是这样的:这个新的工程由两个类:AppDelegate和ViewController以及一个Storyboard组成(如果你选择了两个设备会有两个Storyboard),注意这个项目没有xib文件,让我们首先看看Storyboard 是什么样的,双击Storyboard打开他:Storyboard 的样子和工作方式都和Interface Builder(以下简称为IB)像极了,你可以从左下方的控件库中拖动控件到你的View之中并且组织他们的排放顺序,唯一不同的地方就是,Storyboard 不止是包含一个视图控件,而是所有的视图控件以及他们之间的关系。
Storyboard对一个视图的官方术语是一个场景,但是一个场景其实就是一个ViewController,在iPhone中一次只能够展示一个场景,而在iPad中一次可以展示多个场景,比如Mail应用程序。
通过尝试添加一些控件,你可以感受一下Storyboard的工作方式。
这个是数据显示器,显示所有场景及其控件的结构。
在IB中,这个位置显示的是你的NIB文件中的文件,而在Storyboard中这里显示的是ViewController,目前这里只有一个ViewController,我们接下来可能会增加一些。
这是一个文档管理器的缩小版,叫做dock。
Dock 展示场景中第一级的控件,每个场景至少有一个ViewController和一个FirstReponder,但是也可以有其他的控件,Dock还用来简单的连接控件,如果你需要向ViewController传递一个关系时,只需要将其按住Ctrl键拖到ViewController上就可以了。
Note:你大概不会太长使用FirstResponder,因为它只是一个代理控件,代表着当前你所使用的控件。
现在运行这个应用,他会向我们设计的界面一样。
如果你以前制作过NIB型的应用的话,你也许回去寻找MainWindow.xib ,这个文件包括所有的ViewController,Appdelegate等等,但是在Storyboard中这个特性已经被废止了。
那么,没有这个文件,应用从那里起始呢?让我们打开AppDelegate文件,看看那上面是怎么说的:1.#import <UIKit/UIKit.h>2.3.@interface AppDelegate : UIResponder <UIApplicationDelegate>4.5.@property (strong, nonatomic) UIWindow *window;6.7.@end如果要使用Storyboard特性,那么AppDelegate必须继承自UIResponder类,之前则是继承自NSObject类的,而且必须有一个不是UIOutlet类的Window属性声明才可以。
如果你再去看AppDelegate的执行文件,里面大概什么都没有,甚至连application:didFinishLaunchingWithOptions: 也只是返回了一个YES,而之前,这里则需声明一个ViewController并且将他设置成起始页面,但是现在这些都没有了。
秘密就在info.plist文件中,打开Ratings-Info.plist (在Supporting Files group里) 你就会看到这些:在NIB为UI的应用里,info.plist文件中有一个键兼做NSMainNibFile,或者叫做Main nib file base name,他用来指示UIApplication载入MainWindow.xib,并且将他与应用链接起来,而现在这个键值消失了。
而Storyboard应用则利用UIMainStoryboardFile,或者“Main storyboard file base name”键值来表示当App初始化时的Storyboard名称,当程序运行时,UIApplication会使用MainStoryboard.sotryboard作为第一加载项,并且将他的UIWindow展示在屏幕上,不需要任何编程工作。
在项目总结面板上,你也可以看到并且编辑这些信息:如果你还想设置nib文件的话,另外有地方去设置的。
为了完成这个实验性的小程序,我们打开main.m,加入1.#import <UIKit/UIKit.h>2.3.#import"AppDelegate.h"4.5.int main(int argc, char *argv[])6.{7.@autoreleasepool {8.return UIApplicationMain(argc, argv, nil,9. NSStringFromClass([AppDelegate class]));10. }11.}之前是UIApplicationMain()的函数现在是空的,变成了NSStringFromClass([AppDelegate class]).与之前使用MainWindow.xib的一个最大的不同是:现在app delegate已经不是Storyboard 的一部分了,这是因为app delegate不再从nib文件中,而侍从Storyboard中加载了,我们必须告诉UIApplicationMain 我们的app delegate类的名字是什么,否则他将无法找到。
制作一个Tab类型的应用本教程中的Rating App拥有两个Tab,在Storyboard中,很轻松就能够做出一个Tab视图。
回到MainStoryboard.storyboard中,直接从左边的Library拖进来一个TabViewController就可以了。
新的Tab Bar Controller附带了两个View controller,分别作为Tab的视图使用,UITabBarController被称为包含视图,因为他包含这其他一些View,其他常见的包含视图还有那vi嘎提鸥鸟Controller和SplitView Controller。
在iOS 5中,你还可以自己写一个自定义的Controller,这在以前是做不到的。
包含关系在Storyboard中用一下这种箭头表示。
拉一个Label控件到第一个子试图中,命名为“First Tab”,再在第二个子视图中添加一个Label,命名为“Second Tab”。
注意:当屏幕的缩放大于100%时,你无法在单个场景中添加控件。
选中Tab Bar Controller,进入属性检查器,选中“作为起始场景”,如下图:现在那个没有头的虚虚的小箭头指向了Tab Bar Controller,说明他是起始场景。
这意味着,当你启动这个应用的时候,UIApplication将会将这个场景作为应用的主屏幕。
Storyboard一定要有一个场景是起始场景才行。
现在运行试试吧code专门为创造这种Tab Bar的应用准备了一个模板,我们也可以使用他,但是自己有能力不用模板自己做一个Tab Bar也是不错的事。
如果你添加了多于五个子视图到一个TabBarcontroller的话,并不会创造五个Tab,第四个tab会自动变成More标签,不错吧制作一个表格视图目前连接到Tab bar Controller的视图都是普通的View Controller,现在,我要用一个TableViewController来代替其中的一个ViewController。
单击第一个视图并删除,从Library中拖出一个TableViewController。
在选中这个TableViewController的前提下,从Library中拖出一个NavController,将会直接附着在上面。
当然也可以调换顺序,我完全没意见。
由于NavController和TabBarController一样也是一个包含控制器视图,所以他也必须包含另一个视图,你可以看到同样的箭头连接者这两个View。
请注意所有嵌套在NavController下的View都会有一个Navigation Bar,你无法移除它,因为他是一个虚拟的Bar。
如果你检视属性检测器,你就会发现所有bar的属性都在一起:“Inferred”是Storyboard中的默认设置,他意味着继承的关系,但是你也可以改变他。
但是请注意这些设置都是为了让你更好的进行设计和这样设置的,随意修改默认设置会带来不可遇见的后果,施主自重。
现在让我们把这个新的场景连接到Tab Bar Controller中,按住Ctrl拖动,或者右键。
当你放手的时候,一个提示框会出现。
当然是选第一个了,Relationship – viewControllers ,这将自动创建两个场景之间的关系。
直接拖动就可以改变Tab Item的顺序,同时也会改变显示Tab的顺序,放在最左边的Tab会第一个显示。
现在运行试试看吧在我们在这个应用中加入任何实质性的功能之前,我们先来清理一下Storyboard,你不需要改变TabBarController中的任何内容而只需要改变他的子视图就可以了。
每当你连接一个新的视图到TabBarController中的时候,他就会自动增加一个Tab Item,你可以使用他的子视图来修改该Item的图片和名称。
在NavController中选中Tab Item并且在属性编辑其中将其修改为Player。
将第二个Tab Item命名为“Gesture”我们接下来把自定义的图片加入到这些item中,源码中包含一个名为“Image”的文件夹,在那里你可以找到我们用到的资源。
接下来,将NavController的title改为Player,也可以使用代码··运行看一看,难以置信吧,你到现在也没写一条代码。