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

自定义的iOS的滚轮选择器,附带农历选择器实现

 
阅读更多

From: http://www.cocoachina.com/iphonedev/toolthain/2011/1205/3663.html

 

 

本人由论坛会员beanwolf分享

这个控件并不是对iOS自带的UIPickerView贴图,而是重新实现,我一周多的成果,期间走了不少弯路。哈!

 

此控件开发的原因:
最近公司有个需求,需要做一个农历的日期滚轮选择器,一开始想用iOS自带的UIPickerView,但是设计人员要求的比较高,必须实现她要求的样式,也就是上图中大家看到的样式。但是UIPickerView根本没有提供可以定制样式(也就是更换皮肤)的接口。首先我在论坛上找到了帖子,按照这位兄台所述,确实可以在一定程度上修改UIPickerView的图片,我之所以说一定程度上,有以下几个原因:
(1.)他是用覆盖原有的UIPickerView上的各个子视图上图片的方法做的,那么你提供新的图片就必须与原图片严丝合缝。这也说明,即便是图片换了,样式也是不能换的,譬如:分割线的粗细、上下左右的边框的大小等,也就是不能完全DIY,不能满足我的需求。
(2.)由于覆盖UIPickerView上的各个子视图上图片的做法不是苹果官方给出的,一旦以后某个版本的UIPickerView实现策略改变,例如:3号子视图不再是滚轮的背景图片,你的做法就挂了。

于是我就实现了上图中的滚轮选择器,它与UIPickerView的区别是:
(1.)皮肤图片提供了方法可以做替换的。
(2.)可以选择滚轮上的数据是否循环滚动。
(3.)可以指定选择条的位置。


 为了代码的复用,也就是所谓的OOP,我按照以下的方式实现:
(1.)pickerview目录:这个目录中的IDJPickerView.h是滚轮选择器视图,没有任何和与数据相关的东西,也就是你可以在IDJPickerView上显示任何数据。IDJPickerView通过委托获取需要显示的数据。这个目录下的IDJScrollComponent.h实现了UIScrollView上的内容可以反复循环滚动的功能。
(2.)datepicker 目录:IDJDatePickerView.h实现了IDJPickerView里的协议,并把IDJPickerView做为自己的一个私有成员,实现 了一个可以根据type字段显示公历、农历的日期选择器,IDJDatePickerView.m里的农历算法用的是 solar_chinese_calendar目录中的C++算法,因此农历的相关数据类使用了 C++混编的代码。其实iOS自己支持农历的,但是存在BUG,具体的原因大家可以看我的IDJChineseCalendar.mm的源码,里面的注释 比较详细的。我在这里也使用了一层封装,也就是IDJDatePickerView.m本身也不提供数据,而是通过IDJCalendar.h、 IDJChineseCalendar.h、IDJCalendarUtil.h来提供,这样既实现了数据与视图的分离(因为农历算法太复杂了,直接写在 IDJDatePickerView.m里会使得代码看起来可读性太差了),而且把C++的调用封装在了数据层,使得 IDJDatePickerView.m的视图层代码不会出现C++的API。
(3.)timepicker目录:这个目录纯粹是一个Demo,展示了一个不循环滚动、显示行数与选中条位置不对称的选择器,没有什么实际的含义。

一开始我是纯粹写农历的选择器,代码都是耦合在一起的,后来逐个拆开的,这样代码就可以复用了,不仅仅是农历选择器,而是可以承载任何数据。

原文链接:http://www.cocoachina.com/bbs/read.php?tid=85374

源码:

DJDatePickerView.zip

分享到:
评论

相关推荐

    仿iOS滚轮选择器 下载

    这个是我自己写的一个仿iOS滚轮选择器的自定义控件,使用方法和代码分析都在我的博客里,博客地址是:http://blog.csdn.net/wozuihaole/article/details/70169684

    仿iOS滚轮选择器自定义控件源码

    开发者通常会利用滚动事件和触摸事件来实现滚轮的滚动效果,并通过自定义绘制方法实现iOS样式的界面。以下是可能涉及的关键知识点: 1. 自定义View:自定义控件通常需要继承自Android的基础视图类,如View或 ...

    滚轮选择器

    三、农历选择器实现 农历选择器在许多亚洲国家的APP中非常常见,尤其是在与日期相关的应用中。实现农历选择器需要对农历转换算法有深入理解,一般包括公历与农历之间的相互转换。开发者可能采用了现有的农历库,如...

    Android 仿IOS3D滚轮选择器

    总之,"Android 仿IOS3D滚轮选择器"是一个涉及自定义View、动画、数据绑定等多个Android开发核心知识点的项目,对于提升Android开发者的技术水平和创新能力有着积极的作用。通过不断实践和学习,我们可以更好地掌握...

    iOS实现自定义起始时间选择器视图

    本文将详细讲解如何在iOS中实现一个自定义的起始时间选择器视图,包括其主要功能、步骤以及关键代码实现。 首先,自定义起始时间选择器的主要目的是提供用户友好的时间选取界面,它应该具备以下功能: 1. 调用时间...

    滚轮选择器自定义view

    在Android中,我们可以使用`android.widget.WheelView`或者自定义`ViewGroup`来实现滚轮选择器。如果系统提供的控件无法满足需求,可以创建一个新的`View`类,继承自`View`或`ViewGroup`,并重写`onDraw()`方法绘制...

    ios-自定义选择器.zip

    系统自带的UIPickerView虽然功能强大,但有时并不能完全满足设计师和开发者的需求,因此自定义选择器的实现显得尤为重要。在"ios-自定义选择器.zip"这个压缩包中,包含了一个名为"CustomPickerViewDemol"的示例项目...

    高仿IOS 高仿iOS滚轮实现城市选择器

    综上所述,实现高仿iOS滚轮式城市选择器涉及UI设计、数据处理、自定义视图编写、性能优化等多个方面。通过合理的代码组织和良好的用户体验设计,我们可以创建出一款既美观又实用的城市选择组件。在实际开发中,可以...

    ios-自定义时间选择器.zip

    下面将详细讨论这个自定义选择器可能涉及的关键知识点和实现方式。 1. 自定义UI组件:iOS开发中,我们有时需要根据设计需求创建自定义的UI控件来替代系统默认的组件。HYMDatePicker就是一个例子,它可能提供了比...

    Android-可实现三级联动的选择器高仿iOS的滚轮控件字体大小自适应

    在Android开发中,有时我们需要创建类似iOS风格的滚轮选择器,这种控件通常用于实现多级联动选择,比如省份-城市-区县的选择。在本案例中,我们讨论的是一个名为"Android-可实现三级联动的选择器高仿iOS的滚轮控件...

    仿ios日期滑动(滚轮)选择器

    在本文中,我们将深入探讨如何实现一个仿iOS的日期滑动选择器,并探讨其核心技术和设计要点。 首先,我们需要理解`UIPickerView`的基本原理。它是iOS中的一个控件,用于展示一系列可滚动的行数据,用户可以通过上下...

    个顺滑的、高度自定义的滚轮控件和选择器,支持类似 iOS 的 3D 效果.zip

    个顺滑的、高度自定义的滚轮控件和选择器,支持类似 iOS 的 3D 效果。.zip,A smooth, highly customizable wheel view and picker view, support 3D effects like iOS. 一个顺滑的、高度自定义的滚轮控件和选择器,...

    ios开发控件之自定义选择器

    本示例——“ios开发控件之自定义选择器”将深入探讨如何在Swift或Objective-C中实现一个自定义的选择器,并提供两种加载选择数据源的方法。这个demo不仅简化了开发流程,还具有高度的灵活性,可以适应各种应用程序...

    swift-一个顺滑的高度自定义的滚轮控件和选择器支持类似iOS的3D效果

    A smooth, highly customizable wheel view and picker view, support 3D effects like iOS. 一个顺滑的、高度自定义的滚轮控件和选择器,支持类似 iOS 的 3D 效果

    ios-自定义的时间选择器.zip

    本示例中的"ios-自定义的时间选择器.zip"就是一个针对日期和星期的选择器组件,它由新手开发者封装,旨在帮助用户方便地选取特定的年、月、日以及星期。下面将详细介绍这个时间选择器的实现原理和可能涉及的关键技术...

    Android-仿IOS滚轮

    这种滚轮通常用于时间选择器,因为它能够清晰地展示小时和分钟的层次关系。实现立体效果的关键在于处理每一项的渲染和旋转,以及在滚动时动态调整每一层的透明度和位置。开发者可以通过调整参数来控制3D旋转的角度、...

    ios 日期选择器

    总之,实现一个只显示年月的日期选择器,需要对iOS的UI组件有深入理解,掌握日期处理和自定义视图的技巧。KSDatePickView为你提供了一个解决方案,你可以根据项目需求进行调整和优化。同时,这也是提升iOS开发能力的...

    ios-自定义-选择器(整数,小数).zip

    在iOS开发中,选择器(Selector)是一种常用的数据输入组件,通常用于让用户在一组预设选项中进行选择。...这个自定义选择器的实现可以作为iOS开发中的一种最佳实践,对于需要数值输入的场景具有很高的参考价值。

Global site tag (gtag.js) - Google Analytics