为何要再写图片轮播控件
当然图片轮播控件这种东西真是被写烂了,这里再写一次的原因有三点:一是目前已知的图片轮播控件都在重复同样的功能点(类似于简书客户端的轮播),其实开发者对于图片轮播控件还有很多其它的需求;二是目前我并没有看到比较好的代码,同时基于开发者对于轮播控件的复杂需求,代码也会变得复杂起来(上千行的代码实现);三是我在学校里组织的兴趣小组打算同时编写iOS、Android、Web(基于JS)三个平台的代码,提供一致的特性和服务,并将其开源。三个平台的代码均会在对应作者的博客中进行详细讲解,代码作者的详细信息如下:
说明
该文档由梁志鹏编写,如有问题请直接在评论中回复或邮件联系mingjiameng@sina.com。文档主要描述了用户需求、规范了接口及控制变量。文档中的示例均基于iOS平台,仅供参考。在具体的代码实现中,请注意后期的优化(提高安全性、鲁棒性、性能等,具体请参照),并在接口中提供详细的注释。把文档直接当一篇文章写的目的有两个:一是将来任何一个人都可以参照这个文档尝试实现图片轮播控件;二是这个文档正好可以作为控件的使用手册。
用户需求
待更。。。话说切图真的好麻烦啊。。。
0.1版本应该实现的功能点
输入:控件的frame(位置及大小)、图片数组(images)
输出:一个图片轮播组件,该组件带有指示器(组件内部下方的小圆点),能够定时切换图片并更新指示器。注意轮播的含义是播放到最后一张图片后,又重新开始播放第一张图片,这两张图片之间的切换效果应该和其它图片之间的切换效果相同。具体的效果图参照知乎日报或者简书的图片轮播组件。
接口:(以iOS为例)
@property (nonatomic, strong, nonnull, readonly) NSArray *images; // image array that you use to initialize this instance.
/*
* you are supposed to use this initializer to get an instance.
* if you try to get an instance by system initializer, you will fail.
* param 'images' should contain only UIImage object, or you will receive a nil instance.
* if array 'images' contain no object, you will receive a nil instance.
*/
- (nullable instancetype)initWithFrame:(CGRect)frame andImages:(nonnull NSArray *)images;
用户通过该方法得到一个控件的实例,同时在使用过程中可以访问images数组,但不能修改。