• Stars
    star
    106
  • Rank 324,615 (Top 7 %)
  • Language
    JavaScript
  • License
    MIT License
  • Created over 9 years ago
  • Updated about 5 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

移动端 HTML5 仿 iOS UIPickerView

UIPickerView

这是用来仿造iOS中的UIPickerView而编写的适用于移动端H5页的UI插件,可以适配在任何项目中,不依赖任何库或框架。

Tag v1.0

Requirements

  • iOS 7.0+

  • android 4.1+

使用之前请阅读(used befor reading)

这个插件的设计原则是,通过多个小的UIPickerView组装成一个大的UIPickerView,它只负责UIPickerView的核心操作部分与动画,这样设计的好处,是可以很灵活的进行组装,适用于多个不同的场景。

  • 这个插件由UIPickerView和CAAnimation两个类组成
  • UIPickerView负责与iOS操作一致的核心部分
  • CAAnimation则只负责容器动画的显示与隐藏
  • Demo例子中如果先点击open picker报错的原因是,你还没有先创建一个UIPickerView的实例

Use it

需要实例化UIPickerView类,UIPickerView类也提供了一个简单的类方法,createPickerView来快速创建一个UIPickerView。

在使用之前还需要传入一个配置obj参数对象,各参数意义如下:

dataSource:data,  //数据源
id:'picker', //容器id
constraintsId:'wower', //约束id
kUP:{
  kUPCELLHEIGHT:44, //行高
  kUPFRICTION:0.003 //动画速率
},
valueChange:function(data){ //选择一项会触发的valueChange事件回调
  //UPNotificationCenter.postNotificationName('UPK',data);
}

// dataSource数据源的结构,渲染DOM结构依赖key,value键,具体的业务功能可以根据自己的需求来定义结构:

var data = [
  {
    "key":"index", //下一个UIPickerView数据源的键
    "value":"index" //当前值
  },
]

UIPickerView提供了三个方法来操作

  • UPRender() 重新渲染内容区域部分
  • UPSelectRowIndexPath() 自定义选择某一行
  • UPThen() 选择了一行之后可以在这个回调中再做某些事情

动画驱动

animd = CAAnimation.createAnimation({id:'picker-wraper'});
animd.start(); //开始
animd.finish(); //完成

使用CAAnimation来创建一个动画,UIPickerView可以实现多个在一个容器中,显示的动画执行可以在CAAnimation中执行。

  • id 指定需要动画的容器id
  • WebKitanimation的动画参数都可支持

注意事项

  • 素材图片可替换PS:(找个美工妹纸帮你做漂亮些)
  • cell的高度可定制,要求与css中的行高一致,并且可以与2取余
  • 容器外css以及如何布局,都可以根据业务具体来替换,

感谢

UIPickerView的图片素材是在这里下载的--http://cubiq.org/感谢

效果图

iOS 8.3风格的UIPickerView

More Repositories

1

flutter-book

📚《Flutter 入门指南》
Dart
300
star
2

chrome-extension-book

📚《Chrome Extension 入门指南》
JavaScript
197
star
3

typescript-react-starter

🚀 TypeScript [ React + React-Router + Redux + Redux-Thunk ] Starter
TypeScript
132
star
4

flutter-dress

👚《Flutter 入门指南》演示应用-女装大佬
Dart
108
star
5

index-oa-template

钉钉 企业定制首页 Demo for Front End Project
JavaScript
95
star
6

kodo

React UI Library so easy used in mobile, Demo Style UI Url:http://imweb.github.io/sheral
JavaScript
87
star
7

article

⚡️闪电矿工翻译组-前端(front end developer)
C
58
star
8

cheerful

小巧的JavaScript与Native通信库(JavaScript端实现)
JavaScript
41
star
9

go-dingtalk

DingTalk Golang SDK https://github.com/icepy
Go
32
star
10

weex-dingtalk

Dingtalk Weex JSAPIs SDK
JavaScript
31
star
11

cm.logger

小巧的JavaScript错误捕获,日志展示,用于手机页面调试。
JavaScript
23
star
12

Mockingbird

Swift Scan Code
Swift
22
star
13

flutter_daydart

⏰ 具备 Moment.js 一样 API 的时间处理库
Dart
22
star
14

STNetWork

The Swift HTTP Library use a so esay API
Swift
22
star
15

openapi-nodejs-index-oa-template

钉钉 企业定制首页 Demo for Server Project
JavaScript
17
star
16

MissIMUI

IM聊天应用UI Demo
Objective-C
10
star
17

chat-0-3-flutter

Chat话题:使用 Flutter 完美开发你的移动应用程序(不建议再购买)
Dart
9
star
18

farm-platfrom

简单易用的 i18n 国际化编辑平台
TypeScript
7
star
19

hybrid-app-unzip

Ctrip Hybrid App Zip包解压更新策略Demo
Swift
6
star
20

glob-proxy

Ctrip node.js module HTTP proxy
JavaScript
6
star
21

douban-shell-app

douban 命令行 shell
Python
5
star
22

electron-easy-ipc

简单易用的 electron ipc 通信实现
TypeScript
5
star
23

coinhive-mining

(测试)罗门币挖矿
JavaScript
4
star
24

chat-0-1-dingtalk

Chat话题-从0到1快速开发钉钉企业内部微应用(内容过时,不建议购买)
JavaScript
2
star
25

react-easy-toast

可快速简单使用的 React Toast 组件
TypeScript
2
star
26

website

⚡️闪电矿工翻译组 Website 工程
TypeScript
2
star
27

used

Used.js是一个轻量级小巧的可运行在浏览器中的 JavaScript 函数库
TypeScript
2
star
28

simple

LeetCode(JavaScript)解题,两周一例;
TypeScript
1
star
29

NFT-Tutorial

Deploy a NFT project on Ethereum
JavaScript
1
star
30

flutter-book-demo

🚀《Flutter 入门指南》 演示 Demo
Dart
1
star
31

articles

⚡️闪电矿工翻译组 Website
HTML
1
star
32

downloadZIP

Ctrip Hybrid unpack tools :) Gui dowload zip and unpack webapp (mkdir)
Python
1
star
33

chat-0-4-npm

Chat话题:一文带你玩转 Node.js && 前端项目管理工具 --> NPM
JavaScript
1
star