`
xhanxhanxhan
  • 浏览: 208741 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

原来UIView Animation 可以这么写(看错咯)

 
阅读更多

之前受某人影响以为一连串的UIView Animation 只能这么写:

在某个animation 设置delegate ,然后在 delegate 函数中再调用另一个函数。

 

今天偷闲决定看 iPhone cookbook 代码查漏补缺下,结果发现这代码:

 

	// Hide the bar button and show the view
	self.navigationItem.rightBarButtonItem = nil;
	[self.view viewWithTag:101].alpha = 1.0f;
	
	// Bounce to 115% of the normal size
	[UIView beginAnimations:nil context:UIGraphicsGetCurrentContext()];
	[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
	[UIView setAnimationDuration:0.4f];
	[self.view viewWithTag:101].transform = CGAffineTransformMakeScale(1.15f, 1.15f);
	[UIView commitModalAnimations];

	// Return back to 100%
	[UIView beginAnimations:nil context:UIGraphicsGetCurrentContext()];
	[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
	[UIView setAnimationDuration:0.3f];
	[self.view viewWithTag:101].transform = CGAffineTransformMakeScale(1.0f, 1.0f);
	[UIView commitModalAnimations];
	
	// Pause for a second and appreciate the presentation
	[NSThread sleepUntilDate:[NSDate dateWithTimeIntervalSinceNow:1.0f]];
	
	// Slowly zoom back down and hide the view
	[UIView beginAnimations:nil context:UIGraphicsGetCurrentContext()];
	[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
	[UIView setAnimationDuration:1.0f];
	[self.view viewWithTag:101].transform = CGAffineTransformMakeScale(0.01f, 0.01f);
	[UIView commitModalAnimations];
	
	// Restore the bar button
	[self.view viewWithTag:101].alpha = 0.0f;

 

tnnd 原来可以这么写。

同时学到个新玩意。

 

[NSThread sleepUntilDate:[NSDate dateWithTimeIntervalSinceNow:1.0f]];

 

PS. 原来这个例子就叫做 Modal View Animation 罪过罪过,搞了这么久iPhone还不知道这东西。

 

####################################################

####        抱歉,看错了,原来是作者自己实现的方法                              ########

####################################################

 

仔细一看原来

 

commitModalAnimations

具体代码实现是这样的。

@interface UIViewDelegate : NSObject
{
	CFRunLoopRef currentLoop;
}
@end

@implementation UIViewDelegate
-(id) initWithRunLoop: (CFRunLoopRef)runLoop 
{
	if (self = [super init]) currentLoop = runLoop;
	return self;
}

-(void) animationFinished: (id) sender
{
	CFRunLoopStop(currentLoop);
}
@end

@implementation UIView (ModalAnimationHelper)
+ (void) commitModalAnimations
{
	CFRunLoopRef currentLoop = CFRunLoopGetCurrent();
	
	UIViewDelegate *uivdelegate = [[UIViewDelegate alloc] initWithRunLoop:currentLoop];
	[UIView setAnimationDelegate:uivdelegate];
	[UIView setAnimationDidStopSelector:@selector(animationFinished:)];
	[UIView commitAnimations];
	CFRunLoopRun();
	[uivdelegate release];
}
@end
 
分享到:
评论

相关推荐

    ios-UIView动画、CoreAnimation基本动画、关键帧动画、TransferAnimation的demo.zip

    -uiview动画 -CoreAnimation基本动画 -关键帧动画 -TransferAnimation 文章对应的开发说明 http://liuyanwei.jumppo.com/2015/10/30/iOS-Animation-UIViewAndCoreAnimation.html 如果大家支持,请在github...

    ios中关于uiview

    - 当标准视图无法满足需求时,开发者可以创建自定义视图,继承自`UIView`,并重写`draw(_ rect: CGRect)`方法来绘制自定义内容,还可以实现其他方法以处理触摸事件和其他交互。 理解并熟练掌握这些`UIView`的知识...

    ios 圆UICircularSlider UIView+Animation 几个简单的动画

    总之,通过自定义UICircularSlider并结合UIView+Animation,开发者可以打造出富有吸引力和交互性的iOS应用界面。理解并熟练运用这些技术,对于提升应用程序的用户体验和整体质量至关重要。同时,源代码和工具的分享...

    UIView动画

    UIView 动画 UIView动画

    UIView 保存为图片

    首先,UIView是一个用于在屏幕上显示内容的基本类,它可以包含子视图,承载各种控件或自定义绘制的图形。当需要将UIView保存为图片时,通常会用到`renderInContext:`方法。这个方法可以将UIView的内容渲染到一个...

    iOS中UIView的翻页动画demo

    在iOS开发中,UIView是构建...通过巧妙地组合和使用UIView和Core Animation的工具,开发者可以创建出令人惊叹的翻页动画,同时保证应用的稳定性和兼容性。在实践中不断试验和优化,就能打造出流畅、自然的用户体验。

    iphone用Animation实现动画效果

    在本教程中,我们将深入探讨如何使用`UIView`的`animation`方法来创建简单的上、中、下移动动画效果。这涉及到iOS开发中的基本动画原理,以及如何通过代码控制视图的行为。 首先,我们要理解`UIView`动画的基本概念...

    UIView的生命周期

    在开发iOS应用时,了解UIView及其子类的生命周期方法,可以让开发者合理地安排资源的分配和释放,优化应用的性能,以及提供更好的用户体验。 首先,UIView的生命周期包含了多个关键的方法,每个方法都有其特定的...

    iOS实现UIView渐变效果

    接着,通过设置其frame属性,我们可以指定渐变层在UIView中的位置和大小。最后,将这个CAGradientLayer作为UIView的layer.contents,即可将渐变效果应用到UIView上。 对于描述中提到的“已封装好的实现渐变的UIView...

    UIView AutoLayout.zip

    在解压并探索"UIView-AutoLayout-master"项目后,你可以找到源码实现,进一步学习如何利用这些便捷的方法优化你的AutoLayout代码。这不仅可以提升开发效率,还能让你的iOS应用在各种设备上呈现更加一致和美观的界面...

    UIView镂空

    总结来说,"UIView镂空"是iOS开发中的一个重要技巧,通过巧妙地运用遮罩层和图形路径,可以创造出富有创意和个性化的UI设计。而项目链接中的“MFSubtractMask”可能是一个实际的示例,展示了如何在实践中应用这些...

    UIView分类

    UIView+Extension 对view的一个扩展

    swift-轻量级组件能够让所有UIView都支持进度条展示

    同时,如果需要动画效果,可以使用Core Animation来平滑过渡。 标签中的"Swift开发-进度条视图"表明这个知识点主要关注的是在Swift环境中如何创建和使用进度条。在实际应用中,进度条视图可以是线性(如iOS系统自带...

    UIView转化为ImageDemo

    在"UIView和UIImage的转化.xcodeproj"项目中,你可以找到一个完整的实现例子,包括如何在实际项目中集成这个功能,以及可能遇到的问题和解决方案。通过这个项目,开发者可以更好地理解和掌握这个转换过程,提升iOS...

    uiview随手势旋转

    在iOS开发中,UIViews是构建用户界面的基本元素,它们可以承载各种视图内容,如按钮、图片、文本等。为了提供丰富的交互体验,开发者经常需要实现手势识别功能,允许用户通过触摸屏幕来执行特定的操作。"uiview随...

    ImageFreeCut, 使用UIView子类可以在图像上绘制路径,并将该部分裁剪为.zip

    ImageFreeCut, 使用UIView子类可以在图像上绘制路径,并将该部分裁剪为 ImageFreeCut使用UIView子类可以在图像上绘制路径,并将该部分裁剪为。演示 尝试pod try ImageFreeCut要求Xcode 8 快速 3 iOS 10 安装use_

    UIView的介绍,OC版的

    4. **子视图管理**:`UIView`可以添加、移除子视图,调整子视图的顺序,通过`addSubview:`, `removeFromSuperview`, `bringSubviewToFront:`和`sendSubviewToBack:`等方法。 5. **动画**:`UIView`支持内置的动画...

    Swift自定义UIView动画

    在iOS开发中,Swift语言为开发者提供了丰富的工具来创建引人入胜的用户界面,其中自定义UIView动画是一项重要的技术。这篇博客文章“Swift自定义UIView动画”详细讲解了如何利用Swift来实现对UIView的动态效果,使得...

    UIView+RectCorner

    在实际开发中,`UIView+RectCorner`这样的扩展可以帮助我们快速实现视图的圆角效果,同时保持代码的简洁和可维护性。通过这个扩展,我们可以避免在多个地方重复编写相同的圆角设置代码,从而提高代码的复用性和一致...

    UIView+AZGradient.zip

    + (UIView *_Nullable)az_gradientViewWithColors:(NSArray*> *_Nullable)colors locations:(NSArray*> *_Nullable)locations startPoint:(CGPoint)startPoint endPoint:(CGPoint)endPoint; - (void)az_...

Global site tag (gtag.js) - Google Analytics