冷月葬花魂 发表于 2015-1-18 11:37:12

IOS编程:iOS 7 新特征:视图把持器切换API仓酷云

iPhoneSDK安装,然后最基本的是你要熟悉C语言,再来你得学习开发iPhone所使用的Objective-C语言,接著是Cocoa。如果你是Mac平台开发的入门用户iOS7对我来讲最冲动民气的特征就是新的视图把持器切换API(ViewControllerTransitioningAPI)。iOS7之前,ViewController之间切换,我必要创立自界说的transitions。并且这些办法都撑持不完全,让人头疼。在transitions中增添交互功效就更难了。
在入手下手这篇文章之前,我要提示一下:这是一个新的API,我们尽最年夜勉力让它能够有用,可是其实不能包管是最好。大概必要最少一个月后才干断定,这篇文章不是最好的有用计划,这里只是一个对新功效的探究。假如有更好的利用这个API的办法,请接洽我们,如许就能够修改这篇文章。
在入手下手先容这个API之前,我们必要晓得导航把持器的默许举动在iOS7下已改动了:导航把持器下,切换2个viewcontroller的动画有一点渺小的改动,变得更有交互性。比方,当你但愿弹出一个viewcontroller时,能够从屏幕右边入手下手拖动,把全部内容拖动到屏幕右侧。
让我们细心看一下这个API,我发明这个被重度利用的接口是协定并非一个实体。固然一下去看上往有一点怪,可是我喜好这个API,它给了我们更多的天真性。我们从复杂入手下手:用自界说动画取代原本的viewcontroller的push动画(这里是sampleproject在github)。我们起首必要完成这个新的UINavigationControllerDelegate办法:
1
2
3
4
5
6
7
8
9
10
11
-(id<UIViewControllerAnimatedTransitioning>)
navigationController:(UINavigationController*)navigationController
animationControllerForOperation:(UINavigationControllerOperation)operation
fromViewController:(UIViewController*)fromVC
toViewController:(UIViewController*)toVC
{
if(operation==UINavigationControllerOperationPush){
returnself.animator;
}
returnnil;
}

我们能够察看一下这类范例的操纵(push和pop)前往一个分歧的animator。假如我们分享代码的话,这个多是一个对象。我们大概必要把这个变量经由过程property保留上去。我们也能够为分歧的操纵创立分歧的对象,这里有很高的天真性。
让这个动画运转起来,我们创立一个自界说对象完成UIViewControllerContextTransitioning协定。
1
2
3
@interfaceAnimator:NSObject<UIViewControllerAnimatedTransitioning>
@end

这个协定请求我们完成2个办法,个中一个是形貌动画的实行工夫
1
2
3
4
-(NSTimeInterval)transitionDuration:(id<UIViewControllerContextTransitioning>)transitionContext
{
return0.25;
}

另外一个是形貌动画的实行。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
-(void)animateTransition:(id<UIViewControllerContextTransitioning>)transitionContext
{
UIViewController*toViewController=;
UIViewController*fromViewController=;
[addSubview:toViewController.view];
toViewController.view.alpha=0;
animations:^{
fromViewController.view.transform=CGAffineTransformMakeScale(0.1,0.1);
toViewController.view.alpha=1;
}completion:^(BOOLfinished){
fromViewController.view.transform=CGAffineTransformIdentity;
];
}];
}

这里你能够看到这个协定是怎样用的:没有供应实体的对象参数,而是经由过程这个范例id失掉transitionContext独一的最主要的工具就是在完成动画以后要挪用completeTransition这个告知transitionContext我们已完成动画而且响应的更新了viewcontroller的形态。其他代码是尺度的,我们经由过程transitionContext失掉2个UIViewController,然后利用复杂的UIView动画,这里我们很复杂的做了一个zooming的动画
注重,我们只是写了push的自界说动画,当viewcontrollerpop时,iOS体系仍是会利用默许的滑动动画。并且,完成这个办法后。导航栏也不克不及交互了(就是从左到右拖动完成popviewcontroller)。上面完美它
交互动画

让之前的动画变得可以交互起来十分复杂。我们必要完成另外一个UINavigationControllerDelegate
1
2
3
4
5
-(id<UIViewControllerInteractiveTransitioning>)navigationController:(UINavigationController*)navigationController
interactionControllerForAnimationController:(id<UIViewControllerAnimatedTransitioning>)animationController
{
returnself.interactionController;
}

注重,假如在一个不克不及交互的动画中,这里会前往nil。(译注:当不克不及交互时self.interactionController为nil)
interactionController是UIPercentDrivenInteractionTransition的实例,没有需要更多的设置。我们经由过程创立拖下手势(UIPanGestureRecognizer)来完成:
1
2
3
4
5
6
if(panGestureRecognizer.state==UIGestureRecognizerStateBegan){
if(location.x>CGRectGetMidX(view.bounds)){
navigationControllerDelegate.interactionController=[init];
;
}
}

只要当用户在屏幕右侧操纵时,我们才设置动画是能够交互的(经由过程设置interactionController属性)。然后我们挪用performSegueWithIdentifier(或是不必storyboards,间接pushviewcontroller)在这个手势变更中,我们挪用interactionController的一个办法updateInteractiveTransition:
1
2
3
4
elseif(panGestureRecognizer.state==UIGestureRecognizerStateChanged){
CGFloatd=(translation.x/CGRectGetWidth(view.bounds))*-1;
;
}

这里依据拖动的间隔设置百分比,十分cool的事变是交互把持器(interactionController)和动画把持器(animationcontroller)互相合作。并且由于是一般的UIView动画,它把持着动画的历程。我们不必要处置他们之前的事变,一切的事变都在面前冷静的主动弄定了。
最初,当手势中断或是作废失落,我们必要挪用interactioncontroller响应的办法
<p>1
2
3
4
5
6
7
8
elseif(panGestureRecognizer.state==UIGestureRecognizerStateEnded){
if(.x<0){
;
}else{
;
}
<p>

山那边是海 发表于 2015-1-21 11:18:52

每个行业都一样,想要一天学有所成是不可能的,一定要做好努力的准备,做ios不是简单的学会oc语言。不怕多走弯路,就怕不肯动手。

只想知道 发表于 2015-1-30 16:51:12

看完这个你就可以有多种选择来踏入做应用的阶段

精灵巫婆 发表于 2015-2-2 22:04:17

AD: iPhone文件系统NSFileManager讲解是本文要介绍的内容,主要是通过iphone文件系统来学习NSFileManager的使用方法,具体内容来看本文详解。

若相依 发表于 2015-2-5 01:02:19

看《iPhone 4与iPad开发基础教程》,跟着一步步来

再见西城 发表于 2015-2-11 00:17:46

要学会通过各种方法将面前的事情变成自己感兴趣的,那专研起来就不会是无聊和折磨了。

第二个灵魂 发表于 2015-3-1 18:42:12

其次学习方法和学习心态很重要,在学习当中应该保持一颗良好的心态。应该借鉴别人好的学习方法,大家互相帮助,取长补短。

透明 发表于 2015-3-10 22:00:12

看《iPhone 4与iPad开发基础教程》,跟着一步步来

仓酷云 发表于 2015-3-10 22:47:20

还有开发工具是用Xcode,是在Mac系统的,你多摸索一下就可以开发简单的应用了,建议你买一本iphone开发秘籍第二版看看,希望可以帮到你,谢谢。

飘灵儿 发表于 2015-3-12 09:58:13

看完这个你就可以有多种选择来踏入做应用的阶段

海妖 发表于 2015-3-13 03:09:53

特别是在校的学生,都存在一个小小的尴尬——虽然学习iOS开发的热情高涨,但由于没有多余的银子购买昂贵的Mac电脑而踟蹰不前。其实,针对初学者,如果想进入iOS开发的天地

小妖女 发表于 2015-3-18 20:42:43

培训时可以选择安卓,iOS,Java,因为实习的时候我选了安卓,当时实习时间只有三周,学的晕头转向,而java我也没学过,iOS的基础是C语言,这个大学里还是学过的,于是选择了iOS。

愤怒的大鸟 发表于 2015-3-26 13:51:35

边吃零食边看Stanford的视频教程

乐观 发表于 2015-3-27 10:11:22

培训时可以选择安卓,iOS,Java,因为实习的时候我选了安卓,当时实习时间只有三周,学的晕头转向,而java我也没学过,iOS的基础是C语言,这个大学里还是学过的,于是选择了iOS。

admin 发表于 2015-3-31 06:52:50

我也从简单的状态栏适配开始,先研究了下关于状态栏的适配,特总结如下,供广大网友一起讨论交流。

小魔女 发表于 2015-4-1 08:25:50

开始的时候甚至想放弃,不过想想自己的未来,只能咬牙坚持,课下就不停的缠着老师。放学就补基础,这些基础的东西没有速成的,只有刻苦努力。我是后来发现的,转变自己的心态,不要读书看资料当成一种痛苦

简单生活 发表于 2015-4-1 22:10:57

重要的是,放眼全球也的确找不到第二个如苹果iOS平台这样健壮、完整、先进而且为开发者带来真实收益的开发平台来。

若天明 发表于 2015-4-6 20:11:11

看完这个你就可以有多种选择来踏入做应用的阶段

不帅 发表于 2015-4-19 06:51:31

AD: iPhone文件系统NSFileManager讲解是本文要介绍的内容,主要是通过iphone文件系统来学习NSFileManager的使用方法,具体内容来看本文详解。

活着的死人 发表于 2015-4-20 11:26:43

我也从简单的状态栏适配开始,先研究了下关于状态栏的适配,特总结如下,供广大网友一起讨论交流。
页: [1] 2
查看完整版本: IOS编程:iOS 7 新特征:视图把持器切换API仓酷云