首页 > 其他分享 >ios开发之 -- 自动轮播图创建

ios开发之 -- 自动轮播图创建

时间:2023-08-22 15:33:33浏览次数:32  
标签:count bigScrollView 轮播 -- void ios WIDTH currentPage pageControl

这里是oc版本的,简单记录下:

具体代码如下:

1,准备

#define FRAME [[UIScreen mainScreen] bounds]
#define WIDTH  FRAME.size.width
#define HEIGHT FRAME.size.height

2,具体实现

//scrollview的添加
    _bigScrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(0, 20, WIDTH, HEIGHT)];
    _bigScrollView.showsHorizontalScrollIndicator = NO;
    _bigScrollView.contentSize = CGSizeMake(WIDTH *6, 0);
    _bigScrollView.pagingEnabled = YES;
    _bigScrollView.bounces = NO;
    _bigScrollView.delegate = self;
    [self.view addSubview:_bigScrollView];
    
    //图片内容的添加
    for ( int i = 0; i<6; i++) {
        UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(i *WIDTH, 0, WIDTH, HEIGHT)];
        imageView.image = [UIImage imageNamed:[NSString stringWithFormat:@"%d.jpg",i]];
        [_bigScrollView addSubview:imageView];
    }
    
    //pagecontrol的创建
    _pageControl = [[UIPageControl alloc] initWithFrame:CGRectMake(0, 0, WIDTH, 40)] ;
    _pageControl.center = CGPointMake(_bigScrollView.center.x, _bigScrollView.center.y);
    _pageControl.numberOfPages = 6;
    _pageControl.currentPage = 0;
    _pageControl.pageIndicatorTintColor = [UIColor blueColor];
    _pageControl.currentPageIndicatorTintColor =[UIColor redColor];
    [self.view addSubview:_pageControl];
    [_pageControl addTarget:self action:@selector(pageControllerClick) forControlEvents:UIControlEventValueChanged];
    
    //定时器的创建
    _timer = [NSTimer scheduledTimerWithTimeInterval:2 target:self selector:@selector(onTimer) userInfo:nil repeats:YES];

3,响应方法的实现

-(void)pageControllerClick
{
    [_bigScrollView setContentOffset:CGPointMake(_pageControl.currentPage*320, 0) animated:YES];
}

//在scrollview开始手动滑动的时候
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
    [_timer setFireDate:[NSDate distantFuture]];
}

//在scrollview添加一个延迟方法
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
    
    _pageControl.currentPage = _bigScrollView.contentOffset.x/WIDTH;
    [self performSelector:@selector(disPast) withObject:nil afterDelay:2];//延迟方法
    
}

//启动定时器
-(void)disPast
{
    [_timer setFireDate:[NSDate distantPast]];
}

static int count=1;

//定时器的具体响应方法
-(void)onTimer
{
    _pageControl.currentPage+=count;
    if (_pageControl.currentPage==_pageControl.numberOfPages-1||_pageControl.currentPage==0)
    {
        count=-count;
    };
    [_bigScrollView setContentOffset:CGPointMake(_pageControl.currentPage*WIDTH, 0) animated:YES];
    
}

效果图就不加了,这里仅做记录用!


作者:稻草人11223

标签:count,bigScrollView,轮播,--,void,ios,WIDTH,currentPage,pageControl
From: https://blog.51cto.com/u_13188203/7190268

相关文章

  • 如何查看Navicat已有连接的密码(简单清晰)
    1.打开Navicat,File>ExportConnections2.选择你想查看的数据库,并勾选下方的【导出密码】,导出3.去文件里找到Password 4.打开网址 https://tool.lu/coderunner复制下面的代码放进去,然后把倒数第二行换成上面复制的密码<?phpnamespaceFatSmallTools;classNavi......
  • swift--使用UserDefaults来进行本地数据存储
    UserDefaults适合轻量级的本地客户端存储,存储一个值,新值可以覆盖旧值,可以重复存储,也可以存储一次,然后直接从UserDefaults里面读取上次存储的信息,很方便,用的时候,宏定义下,直接调用!轻量级数据库的话,移动端一般使用SQlite数据库,也是一款轻量级的适合移动端设备的数据库,具体可以参考我以......
  • C++ 面向对象开发1
    ObjectBased:面对的是单一class的设计;ObjectOriented:面对的是多重classes的设计,classes和classes之间的关系。class前向声明,声明,定义。函数若在classbody中定义完成,便自动成为inline函数。如果函数太复杂就不会成为inline。overload的函数编译之后签名不同。虽然参数列表不......
  • swift开发之 -- 自动轮播图(UIScrollView+UIPageControl+Timer)
    比较简单,原理就不说了,这里只做记录:代码如下:1,准备varpageControl:UIPageControl?varmyscrollView:UIScrollView?varmyTimer:Timer?varmycurrentPage:NSInteger?varcourses=[["name":"first","pic":"1.jpeg&qu......
  • ios开发之 -- NSData 和 NSString , UIImage 等之间的互转
    1//NSData转换为UIImage2NSData*imageData=[NSDatadataWithContentsOfFile:imagePath];3UIImage*image=[UIImageimageWithData:imageData];45//UIImage转换为NSData6NSData*imageData=UIImagePNGRepresentation(aimae);1.......
  • 技术领先的用友iuap平台,助力升级数智化底座、驾驭数智未来
    8月19日下午,由用友主办的“2023全球商业创新大会-企业数智化技术峰会”,在上海市“国家会展中心”隆重召开。此次峰会以“升级企业数智化底座”为主题,与众多行业领先企业大咖、生态伙伴,揭秘用友BIP核心技术与平台能力,解析多维度场景下企业数智化底座升级路径,共享行业领先企业升级数......
  • 数字藏品app制作软件
      数字藏品的市场发展,促进更多的人进来制作开发数字藏品app软件,这些软件能为用户提供给各种的价值,实现商品的流通转换,帮助我们找到适合自己的藏品。  首先,数字藏品app制作软件通常具有艺术创作功能,这些软件提供了各种绘画、图形设计工具,使用户能够尽情地表达自己的想法和......
  • ios开发之--UICollectionView的使用
    最近项目中需要实现一种布局,需要用到UICollectionView,特在此整理记录下!贴上最终实现的效果图: 1,声明@interfaceFirstViewController()<UICollectionViewDelegate,UICollectionViewDataSource,UICollectionViewDelegateFlowLayout>@property(nonatomic,strong)UICollectionView*m......
  • VNPY-网络交易(算法交易)
    fromvnpy.trader.constantimportDirectionfromvnpy.trader.objectimportTradeData,OrderData,TickDatafromvnpy.trader.engineimportBaseEnginefromvnpy.trader.constantimportOrderType,Offset,Directionfrom..templateimportAlgoTemplateimportmat......
  • VNPY-网格交易(策略交易)
    ##grid_trade_strategy.pyfromvnpy_ctastrategyimport(CtaTemplate,StopOrder,TickData,BarData,TradeData,OrderData,BarGenerator,ArrayManager,)fromvnpy.trader.constantimportOrderType,Offset,DirectionclassGr......