iOS轮播图封装 ECAutoScrollBanner

More 更多

  • https://github.com/EchoZuo
  • Email:
    zuoqianheng@foxmail.com
    || QQ:615125175
  • 简书:@EchoZuo

其三步:招人,不断招人

盛开之片设置属性(代码中注释都深详细,也堪直接翻译看源码即可)
/**
 * delegate,非必
 */
@property (nonatomic, weak) id<ECAutoScrollBannerDelegate> delegate;

/**
 * 是否自动翻页,默认NO,非必
 */
@property (nonatomic, assign) BOOL isAutoPaging;

/**
 * 是否展示PageControl,默认YES,非必
 */
@property (nonatomic, assign) BOOL isHavePageControl;

/**
 * 是否无限循环,默认NO,非必
 */
@property (nonatomic, assign) BOOL isInfinitePaging;

/**
 * 自动翻页的时候知否支持手动滑动,必须在isAutoPaging=YES时候设置才有效果,if isAutoPaging=YES,则这个必须设置
 */
@property (nonatomic, assign) BOOL isEnabledPanGestureRecognizer;

/**
 * collectionView backgroundColor,默认lightGrayColor,非必
 */
@property (nonatomic, strong) UIColor *collectionViewBgColor;

/**
 * 可以自定义pageControl的frame(相对于self),必须isHavePageControl=YES,如果没有设置新坐标,则取默认坐标,非必
 */
@property (nonatomic, assign) CGRect pageControlFrame;

/**
 * 自动翻页间隔时间。需isAutoPaging=YES才需要设置,否则设置什么效果。默认3.0f
 */
@property (nonatomic, assign) CGFloat  autoPageInterval;

当张有做成了哟事情时,很多人数一再都见面发这么的慨叹:这个事物本身一度想到了。

纯文本滚动条,适用于广告、新闻资讯等

- (ECAutoScrollBanner *)textBannerView {
    if (_textBannerView == nil) {
        _textBannerView = [ECAutoScrollBanner initTextBannerWithFrame:self.topView.bounds withTextDataSource:self.textDataArray withBannerScrollDirection:ECAutoScrollBannerScrollDirectionVertical];
        _textBannerView.delegate = self;
        _textBannerView.isAutoPaging = YES;
        _textBannerView.isHavePageControl = NO;
        _textBannerView.isInfinitePaging = YES;
        _textBannerView.isEnabledPanGestureRecognizer = NO;
        _textBannerView.autoPageInterval = 4.0f;
    }
    return _textBannerView;
}

先是步:竭尽所能推进

支撑手动翻页和定时翻页
  • 手动翻页没什么可说的。自动翻页其实就是一个简的定时器(用NSTimer和GCD都ok)实现定时调用对应的翻页方法即可。

当即同步是哀悼起袖子疯狂销售的节拍。招人靠的凡给他人相信您的愿景。留人则要依赖获得组织的看重。如果产品无是若开来说,要想形成及时无异于点最好的主意是亲身杀销售、挖掘出新工作,推动收入提高。在初创企业,光靠在场边朝着队员大喊大叫是心有余而力不足获取他们之深信的。你的手必须是污染的,你得冒汗,你得达前方。找到您的恢宏模式,未来就是生出希望。

手动翻页的view视图轮播

搭下去,改改文,把商家是召开啊的刻画下来,并呈现让客户,看看到底可以了多少钱。一段时间之后就是得为明白了第一版产品的定价了。

bug fix:

  1. 创立view试图类的轮播图优化修复。(注意:view视图类的轮播中,view的坐标是对立于cell.contentView的坐标,是contentView的子视图)

唯独您像也时有发生充分的理:我是发想法,可是我同一不晓技术,二而从不钱,怎么收拾?Alumnify
Inc 的开拓者 AJ AGRAWAL 的立即首文章提供的 4 步指南可供参考。

Explain 说明

然后就是示意图(UI 设计)。AGRAWAL
用的凡Balsamiq,这个东西可免费试用。然后您得管您的宏图原型展示让尽可能多的客户来得到反馈。至少要收获
100
个人的反馈。这样一来,我们针对好之客户是何许人也都发了必然之问询,也懂得了如果想付出有会至少养活自己的出品要开来什么。至此,不花钱为无待支出经历的客户发现路的行事发表成功。

简介&特性

然而最主要是,别光想,Just Do It!如何行事可参见此文。

重点的组成部分测算
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    if (self.isAutoPaging) {
        scrollView.panGestureRecognizer.enabled = self.isEnabledPanGestureRecognizer;
    }

    NSInteger page = 0;

    // 是否无限循环
    if (!self.isInfinitePaging) {
        if (self.bannerScrollDirection == ECAutoScrollBannerScrollDirectionHorizontal) {
            page = scrollView.contentOffset.x / scrollView.frame.size.width;
        } else {
            page = scrollView.contentOffset.y / scrollView.frame.size.height;
        }
        self.pageControl.currentPage = page;
    } else {
        if (self.bannerScrollDirection == ECAutoScrollBannerScrollDirectionHorizontal) {
            page = scrollView.contentOffset.x / scrollView.frame.size.width;

            // 第一张
            if ((page == 0) && (scrollView.contentOffset.x <= 30)) {
                page = self.mainDataSource.count - 2;

                NSIndexPath *indexPath = [NSIndexPath indexPathForItem:page inSection:0];
                [self.collectionView scrollToItemAtIndexPath:indexPath atScrollPosition:UICollectionViewScrollPositionNone animated:NO];
            } else if ((page == self.mainDataSource.count - 1) && (scrollView.contentOffset.x >= scrollView.contentSize.width - scrollView.frame.size.width - 30)) {
                // 最后一张
                page = 0 + 1;
                NSIndexPath *indexPath = [NSIndexPath indexPathForItem:page inSection:0];
                [self.collectionView scrollToItemAtIndexPath:indexPath atScrollPosition:UICollectionViewScrollPositionNone animated:NO];
            }
        } else {
            page = scrollView.contentOffset.y / scrollView.frame.size.height;

            // 第一张
            if ((page == 0) && (scrollView.contentOffset.y <= 30)) {
                page = self.mainDataSource.count - 2;

                NSIndexPath *indexPath = [NSIndexPath indexPathForItem:page inSection:0];
                [self.collectionView scrollToItemAtIndexPath:indexPath atScrollPosition:UICollectionViewScrollPositionNone animated:NO];
            } else if ((page == self.mainDataSource.count - 1) && (scrollView.contentOffset.y >= scrollView.contentSize.height - scrollView.frame.size.height - 30)) {
                // 最后一张
                page = 0 + 1;
                NSIndexPath *indexPath = [NSIndexPath indexPathForItem:page inSection:0];
                [self.collectionView scrollToItemAtIndexPath:indexPath atScrollPosition:UICollectionViewScrollPositionNone animated:NO];
            }
        }
        self.pageControl.currentPage = page - 1;
    }
}

至 Angellist地方公布一个页面,开始查找开发者。同时,利用
LinkedIn、你的关联还是到大学里去。

详见介绍

正文原载于36氪,点是羁押原稿

Github:https://github.com/EchoZuo/ECAutoScrollBanner

紧接着,写下她们的回答,从中寻找模式。(如果急需帮忙,可看Steve
Blank在Udacity的免费课程。)。每访谈了一组人数后来虽使对画布进行调整。AGRAWAL
开始为Alumnify写第一行代码之前画布就早已转移了 30 多合了。

轮播图封装,网上发出无数成的demo,也从来不什么难度。这个是很早前写了的轮播图封装,这次正好要就是重新整理一下发生来,希望会帮助及要之人口。

  • 支撑手动翻页、自动定时翻页
  • 支撑垂直和水准滚动
  • 支持地方图片、网络图片、纯文本以及另外View视图,如图文混合排版的视图等。
  • 支撑设置展示与隐藏pageControl和于定义pageControl的frame
  • 得举行简便修改,将需的特定属性开放使用

而想到了,别人好了。

Usage 使用

今天而既掌握客户想使啊、定价有点,以及用哪的食指入了。

倘若要点击跳转等,实现协议和商谈章程即可,下同。
- (void)tapScrollBannerItem:(NSInteger)itemTag withObject:(id)object {
    NSLog(@"文本banner。点击了第%ld个子item,下标%ld", (long)itemTag + 1, (long)itemTag);
}

第二步:学点开发的基础知识

机关翻页的图banner,url图片

- (ECAutoScrollBanner *)urlImageBannerVeiw {
    if (_urlImageBannerVeiw == nil) {
        UIImageView *placehodelImage = [[UIImageView alloc] initWithFrame:CGRectMake(0, 50 + 50 + 10 + 180 + 10, self.view.frame.size.width, 180)];
        placehodelImage.backgroundColor = [UIColor lightGrayColor];
        _urlImageBannerVeiw = [ECAutoScrollBanner initOnlineImageBannerWithFrame:CGRectMake(0, 50 + 50 + 10 + 180 + 10, self.view.frame.size.width, 180) withImageUrlDataSource:self.imageUrlDataArray withPlaceholderImage:placehodelImage.image withBannerScrollDirection:ECAutoScrollBannerScrollDirectionHorizontal];
        _urlImageBannerVeiw.isAutoPaging = YES;
        _urlImageBannerVeiw.isEnabledPanGestureRecognizer = YES;
        _urlImageBannerVeiw.isInfinitePaging = YES;
    }
    return _urlImageBannerVeiw;
}

打脑里的愿景开始,把想法写及纸上。把精益画布(3
只参考链接:商业模式画布、如何创造Lean
Canvas及其简版)填上,然后将价值定位了解得滚瓜烂熟。做截止这些下,开始访谈
100 员神秘客户。

手动翻页的图纸banner,本地图片

- (ECAutoScrollBanner *)imageBannerView {
    if (_imageBannerView == nil) {
        _imageBannerView = [ECAutoScrollBanner initLocalImageBannerWithFrame:CGRectMake(0, 30, self.bottomView.frame.size.width, 180) withImageDataSource:self.imageDataArray withBannerScrollDirection:ECAutoScrollBannerScrollDirectionHorizontal];
        _imageBannerView.isAutoPaging = NO;
    }
    return _imageBannerView;
}

如法炮制编程的地方重重, Codecademy、Treehouse、 Code.org等,每天 2
小时,坚持一个月份。这点努力不会见受你成
CTO,但是了解点编程基础足够了。对开发者做的事务就只有是摸底一些,也会见对造成至均等个又好之技巧协同创始人有所助。学完基础知识以后,到网上寻找个免费之
web 模板(可以就此freewebtemplates.com,觉得麻烦的话语可据此WordPress)。

(注意:view视图类的轮播中,view的坐标是相对于cell.contentView的坐标,是contentView的子视图)
- (ECAutoScrollBanner *)viewBannerView {
    if (_viewBannerView == nil) {
        _viewBannerView = [[ECAutoScrollBanner alloc] initViewBannerWithFrame:CGRectMake(0, 20 + 180 + 20 + 180 + 20, self.view.frame.size.width, 180) withViewsDataSouce:self.viewDataArray withBannerScrollDirection:ECAutoScrollBannerScrollDirectionHorizontal];
        _viewBannerView.isAutoPaging = NO;
    }
    return _viewBannerView;
}

还有即使是不用吃兴致盎然的开发者把工作闹砸,不克吃他俩本着产品提供输入。作为主管,你的对象是形容最终目的地的蓝图,但是什么到目的地需要而造成的丁帮忙。如果两者事先提到比较好的言语招聘技术并创始人会爱些。

ECAutoScrollBanner

轮播图封装。可以兑现机关定时翻页、手动翻页;垂直和品位滚动等。支持纯文本、本地图片、网络图片和另view试图。

鉴于你无出资,所以你转让的股权就生重要了。如果你表现得无足够慷慨的言语,是雅为难找到适合的开发者的。除了让利以外,这首稿子好告知你如果物色什么的一头创始人。至于开发者,如果他们只有工作时来做啊并未干。时间未敷足给你对确重要的事物做出决定。

兑现方式

第四步:开卖

下示例

支撑竖向垂直翻页和水准翻页
typedef NS_ENUM(NSInteger, ECAutoScrollBannerScrollDirection){
    ECAutoScrollBannerScrollDirectionVertical       = 1,    // 竖向滚动
    ECAutoScrollBannerScrollDirectionHorizontal     = 0,    // 横向滚动
};

骨子里以起来老方便特别简单。只需要初始化,然后设置相关属性即可。支持先默认初始化,在得的时刻装其样式和翻页效果翻页时间相当。

效果图

image

Navigation 导航

  • Abstract
    概要

    • 简介&特性
    • 效果图
  • Explain
    说明

    • 兑现方式
    • 详细介绍
  • Usage
    使用

    • 行使示例
  • More
    更多

Abstract 概要

动用方式

  1. 以ECAutoScrollBanner文件夹直接拖入路蒙,导入头文件#import
    “ECAutoScrollBanner.h”
  2. CocoaPods:pod ‘ECAutoScrollBanner’
轮播图基本落实思路发生如下几种植,本次封装使用的是第一种植方法,用UICollectionView实现。
  1. 基于UICollectionView的卷入(推荐以)
    1. 实现方便,使用方便,并且实现代码也非复杂;
    2. 大量加载与滚动或者机关轮播的下基本不待考虑录用性能相当于题材
  2. 故UIScrollView+UIImageView的方式实现A
    1. 用户观看底是基本上单UIImageView的兑现方式;
    2. 如若数额最多,需要考虑到录取等性问题;
    3. 假使底层是UITableView并且轮播图是当做cell的言语,更要考虑到tableView嵌套scrollView的滚性能问题。
  3. 故此UIScrollView+UIImageView的方贯彻B
    1. 徒待创造3独UIImageView,不需要考虑用问题;
    2. 跟亚栽不同的虽用户永远看的是中间深UIImageView,只是上面的内容更持续转变,其内部贯彻其实是在不断的更动十分轮播数组。
  4. 但生一个UIImageView
    1. 这种实现方式不再基于ScrollView,同样未在用等的题目。这种实现方式与第三种植有相似之处,但是它们跟第三种植之区别是不再采用scrollView的图形切换方式。还是未歇地失去改变这个数组的内容。这种实现方式的着力在切换的时候使用自定义的layer层的转场动画。模拟scrollView的滑行效果。
本次封装实现思路
  • 底层以UICollectionView当控制器。给原数源下标0号上加原数量源末尾数据,给首批数据源下标末尾添加原多少源0个之数据。以之形成一个初的数据源。可以参照下图
image