前面iOS学习之UIPickerView控件的简单使用 用到的UIPickerView弹出来是通过
textField.inputView = selectPicker;   textField.inputAccessoryView = doneToolbar; 这中方法来做的。如果UIPickerView或UIDatePicker控件通过其他按钮或事件激活的时候怎么能像系统那样弹出来呢?为了实现这个需求,就要用到动画效果了。

1、新建一个Single View App项目,在.xib文件中添加控件如下:


两个button,一个UIDatePicker。

2、创建xib和ViewController的连接

按住Control键创建三个控件对于的映射。
创建后viewController.h代码如下
  1. #import <UIKit/UIKit.h>
  2. @interface ViewController : UIViewController
  3. @property (retain, nonatomic) IBOutlet UIDatePicker *pickerView;
  4. - (IBAction)popView:(id)sender;
  5. - (IBAction)inView:(id)sender;
  6. @property  (nonatomic, retain) NSString *string;
  7. @end

3、隐藏pickerView

  1. - (void)viewDidLoad
  2. {
  3. [super viewDidLoad];
  4. self.pickerView.frame = CGRectMake(0, 480, 320, 260);
  5. }

把pickerView 放到屏幕以为下面。

4、弹出和弹回pickerView

在pickerView弹出来或回去的时候,设置动画
  1. - (IBAction)popView:(id)sender {
  2. CGContextRef context = UIGraphicsGetCurrentContext();
  3. [UIView beginAnimations:nil context:context];
  4. [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
  5. [UIView setAnimationDuration:0.6];//动画时间长度,单位秒,浮点数
  6. [self.view exchangeSubviewAtIndex:0 withSubviewAtIndex:1];
  7. self.pickerView.frame = CGRectMake(0, 245, 320, 260);
  8. [UIView setAnimationDelegate:self];
  9. // 动画完毕后调用animationFinished
  10. [UIView setAnimationDidStopSelector:@selector(animationFinished)];
  11. [UIView commitAnimations];
  12. }
  13. - (IBAction)inView:(id)sender {
  14. CGContextRef context = UIGraphicsGetCurrentContext();
  15. [UIView beginAnimations:nil context:context];
  16. [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
  17. [UIView setAnimationDuration:0.6];//动画时间长度,单位秒,浮点数
  18. self.pickerView.frame = CGRectMake(0, 480, 320, 260);
  19. [UIView setAnimationDelegate:self];
  20. // 动画完毕后调用animationFinished
  21. [UIView setAnimationDidStopSelector:@selector(animationFinished)];
  22. [UIView commitAnimations];
  23. }
  24. -(void)animationFinished{
  25. NSLog(@"动画结束!");
  26. }

动画结束后回调动画结束的函数。

运行,弹出
  
第一个图片是弹出来到一半,第二个图片弹出全部。

4、代码块的方法做动画弹出pickerView

单独写个方法
  1. - (void)ViewAnimation:(UIView*)view willHidden:(BOOL)hidden {
  2. [UIView animateWithDuration:0.3 animations:^{
  3. if (hidden) {
  4. view.frame = CGRectMake(0, 480, 320, 260);
  5. } else {
  6. [view setHidden:hidden];
  7. view.frame = CGRectMake(0, 245, 320, 260);
  8. }
  9. } completion:^(BOOL finished) {
  10. [view setHidden:hidden];
  11. }];
  12. }

5、在Action中调用

  1. - (IBAction)popView:(id)sender {
  2. [self ViewAnimation:self.pickerView willHidden:NO];
  3. }
  4. - (IBAction)inView:(id)sender {
  5. [self ViewAnimation:self.pickerView willHidden:YES];
  6. }

这个方法更简单实用


PS:以上的方法可以用在TableViewCell点击cell时弹回pickerView等需求.

著作权声明:本文由http://blog.csdn.net/totogo2010/原创,欢迎转载分享。请尊重作者劳动,转载时保留该声明和作者博客链接,谢谢

iOS学习之自定义弹出UIPickerView或UIDatePicker(动画效果)的更多相关文章

  1. iOS开发之自定义弹出的键盘

    self.inputField.inputView = myView 按文本框弹出的键盘不再是普通文字输入键盘,而是我们设置的myView.一般把这个方法写在viewDiLoad方法中. 也可以在键盘 ...

  2. jquery 显示弹出层可利用动画效果

    1 show()方法和hide()方法 $("selector").show()  从display:none还原元素默认或已设置的display属性$("selecto ...

  3. .NET MVC 学习笔记(四)— 基于Bootstarp自定义弹出框

    .NET MVC 学习笔记(四)—— 基于Bootstarp自定义弹出框 转载自:https://www.cnblogs.com/nele/p/5327380.html (function ($) { ...

  4. iOS学习笔记-自定义过渡动画

    代码地址如下:http://www.demodashi.com/demo/11678.html 这篇笔记翻译自raywenderlick网站的过渡动画的一篇文章,原文用的swift,由于考虑到swif ...

  5. js自定义弹出框

    js自定义弹出框: 代码如下 <html> <head><title>自定义弹出对话框</title> <style type ="te ...

  6. android自定义弹出框样式实现

    前言: 做项目时,感觉Android自带的弹出框样式比较丑,很多应用都是自己做的弹出框,这里也试着自己做了一个. 废话不说先上图片: 实现机制 1.先自定义一个弹出框的样式 2.自己实现CustomD ...

  7. CSS3/jQuery自定义弹出窗口

    简单演示一下,精简了演示效果和css样式文件,更利于在项目中的实际应用 引入style.css   index.js <!DOCTYPE HTML PUBLIC "-//W3C//DT ...

  8. react native仿微信性别选择-自定义弹出框

    简述 要实现微信性别选择需要使用两部分的技术: 第一.是自定义弹出框: 第二.单选框控件使用: 效果 实现 一.配置弹出框 弹出框用的是:react-native-popup-dialog(Git地址 ...

  9. 读《深入理解Windows Phone 8.1 UI控件编程》1.4.3 框架的应用示例:自定义弹出窗口有感

    前些天买了园子里林政老师的两本 WP8.1 的书籍.毕竟想要学得深入的话,还是得弄本书跟着前辈走的. 今天读到 1.4.3 节——框架的应用示例:自定义弹出窗口这一小节.总的来说,就是弄一个像 Mes ...

随机推荐

  1. {matlab}{计时函数}cputime

    putime 显示Matlab启动后所占用的CPU时间: tic,toc 秒表计时,tic是开始,toc是结束: clock,etime 前者显示系统时间,后者计算两次调用clock之间的时间差. e ...

  2. java中static关键字的理解(转载)

    static关键字是很多朋友在编写代码和阅读代码时碰到的比较难以理解的一个关键字,也是各大公司的面试官喜欢在面试时问到的知识点之一.下面就先讲述一下static关键字的用法和平常容易误解的地方,最后列 ...

  3. Javascript实现简单的选项卡

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/u011043843/article/details/30723933 在线演示:http://jsf ...

  4. C# winform中自定义用户控件 然后在页面中调用用户控件的事件

    下面是用户控件的代码: using System; using System.Collections.Generic; using System.ComponentModel; using Syste ...

  5. php+ajax+jquery 定时刷新页面数据

    testajax.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http: ...

  6. 1.Django入门小Demo

    1.Django安装 (1)前提:已安装python环境 (2)打开命令行输入:pip install Django==2.1.3 (3)打开Pycharm,在File--Setting--Proje ...

  7. jdk1.8新特性之接口default方法

    众所周知,default是java的关键字之一,使用场景是配合switch关键字用于条件分支的默认项.但自从java的jdk1.8横空出世以后,它就被赋予了另一项很酷的能力——在接口中定义非抽象方法. ...

  8. WCF引用方式之IIS方式寄宿服务

    通过IIS方式寄宿服务 之前的例子是将控制台作为WCF的寄宿方式或者是直接添加契约项目的引用,然后通过配置或者是ChannelFactory的形式进行创建服务对象,其实在大多的开发中以IIS的形式创建 ...

  9. Python学习笔记第一讲

    1.pycharm快捷键 撤销与反撤销:Ctrl + z,Ctrl + Shift + z 缩进.不缩进:Tab.Shift + tab 运行:Shift + F10 取消注释,行注释:Ctrl + ...

  10. jeecg中一对多的关系映射

    1.首先看一张前端页面: 有一张主表和3张子表,显示这3张子表的代码如下 <t:tabs id="tt" iframe="false" tabPositi ...