之前受某人影响以为一连串的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
分享到:
相关推荐
-uiview动画 -CoreAnimation基本动画 -关键帧动画 -TransferAnimation 文章对应的开发说明 http://liuyanwei.jumppo.com/2015/10/30/iOS-Animation-UIViewAndCoreAnimation.html 如果大家支持,请在github...
- 当标准视图无法满足需求时,开发者可以创建自定义视图,继承自`UIView`,并重写`draw(_ rect: CGRect)`方法来绘制自定义内容,还可以实现其他方法以处理触摸事件和其他交互。 理解并熟练掌握这些`UIView`的知识...
总之,通过自定义UICircularSlider并结合UIView+Animation,开发者可以打造出富有吸引力和交互性的iOS应用界面。理解并熟练运用这些技术,对于提升应用程序的用户体验和整体质量至关重要。同时,源代码和工具的分享...
UIView 动画 UIView动画
首先,UIView是一个用于在屏幕上显示内容的基本类,它可以包含子视图,承载各种控件或自定义绘制的图形。当需要将UIView保存为图片时,通常会用到`renderInContext:`方法。这个方法可以将UIView的内容渲染到一个...
在iOS开发中,UIView是构建...通过巧妙地组合和使用UIView和Core Animation的工具,开发者可以创建出令人惊叹的翻页动画,同时保证应用的稳定性和兼容性。在实践中不断试验和优化,就能打造出流畅、自然的用户体验。
在本教程中,我们将深入探讨如何使用`UIView`的`animation`方法来创建简单的上、中、下移动动画效果。这涉及到iOS开发中的基本动画原理,以及如何通过代码控制视图的行为。 首先,我们要理解`UIView`动画的基本概念...
在开发iOS应用时,了解UIView及其子类的生命周期方法,可以让开发者合理地安排资源的分配和释放,优化应用的性能,以及提供更好的用户体验。 首先,UIView的生命周期包含了多个关键的方法,每个方法都有其特定的...
接着,通过设置其frame属性,我们可以指定渐变层在UIView中的位置和大小。最后,将这个CAGradientLayer作为UIView的layer.contents,即可将渐变效果应用到UIView上。 对于描述中提到的“已封装好的实现渐变的UIView...
在解压并探索"UIView-AutoLayout-master"项目后,你可以找到源码实现,进一步学习如何利用这些便捷的方法优化你的AutoLayout代码。这不仅可以提升开发效率,还能让你的iOS应用在各种设备上呈现更加一致和美观的界面...
总结来说,"UIView镂空"是iOS开发中的一个重要技巧,通过巧妙地运用遮罩层和图形路径,可以创造出富有创意和个性化的UI设计。而项目链接中的“MFSubtractMask”可能是一个实际的示例,展示了如何在实践中应用这些...
UIView+Extension 对view的一个扩展
同时,如果需要动画效果,可以使用Core Animation来平滑过渡。 标签中的"Swift开发-进度条视图"表明这个知识点主要关注的是在Swift环境中如何创建和使用进度条。在实际应用中,进度条视图可以是线性(如iOS系统自带...
在"UIView和UIImage的转化.xcodeproj"项目中,你可以找到一个完整的实现例子,包括如何在实际项目中集成这个功能,以及可能遇到的问题和解决方案。通过这个项目,开发者可以更好地理解和掌握这个转换过程,提升iOS...
在iOS开发中,UIViews是构建用户界面的基本元素,它们可以承载各种视图内容,如按钮、图片、文本等。为了提供丰富的交互体验,开发者经常需要实现手势识别功能,允许用户通过触摸屏幕来执行特定的操作。"uiview随...
ImageFreeCut, 使用UIView子类可以在图像上绘制路径,并将该部分裁剪为 ImageFreeCut使用UIView子类可以在图像上绘制路径,并将该部分裁剪为。演示 尝试pod try ImageFreeCut要求Xcode 8 快速 3 iOS 10 安装use_
4. **子视图管理**:`UIView`可以添加、移除子视图,调整子视图的顺序,通过`addSubview:`, `removeFromSuperview`, `bringSubviewToFront:`和`sendSubviewToBack:`等方法。 5. **动画**:`UIView`支持内置的动画...
在iOS开发中,Swift语言为开发者提供了丰富的工具来创建引人入胜的用户界面,其中自定义UIView动画是一项重要的技术。这篇博客文章“Swift自定义UIView动画”详细讲解了如何利用Swift来实现对UIView的动态效果,使得...
在实际开发中,`UIView+RectCorner`这样的扩展可以帮助我们快速实现视图的圆角效果,同时保持代码的简洁和可维护性。通过这个扩展,我们可以避免在多个地方重复编写相同的圆角设置代码,从而提高代码的复用性和一致...
+ (UIView *_Nullable)az_gradientViewWithColors:(NSArray*> *_Nullable)colors locations:(NSArray*> *_Nullable)locations startPoint:(CGPoint)startPoint endPoint:(CGPoint)endPoint; - (void)az_...