iOS程序-使用UIScrollView实现分页功能

2025-11-01 03:56:19

1、#import <UIKit/UIKit.h>

@interface ViewController : UIViewController

@property (weak, nonatomic) IBOutlet UIScrollView *scrollView;

@end

2、#import "ViewController.h"

#define kCount 8

@interface ViewController () <UIScrollViewDelegate>

{

    UIPageControl *_pageControl;

}

@end

@implementation ViewController

- (void)viewDidLoad {

    [super viewDidLoad];

    

    CGFloat w = self.view.frame.size.width;

    CGFloat h = self.view.frame.size.height;

    for (int i = 0; i< kCount; i++) {

        UIImageView *imageView = [[UIImageView alloc] init];

        

        // 1.设置frame

        imageView.frame = CGRectMake(i * w, 0, w, h);

        

        // 2.设置图片

        NSString *imgName = [NSString stringWithFormat:@"0%d.jpg", i + 1];

        imageView.image = [UIImage imageNamed:imgName];

        

        [_scrollView addSubview:imageView];

    }

    

    // height == 0 代表 禁止垂直方向滚动

    _scrollView.contentSize = CGSizeMake(kCount * w, 0);

    _scrollView.showsHorizontalScrollIndicator = NO;

    _scrollView.pagingEnabled = YES;

    _scrollView.delegate = self;

    

    // 添加PageControl

    UIPageControl *pageControl = [[UIPageControl alloc] init];

    pageControl.center = CGPointMake(w * 0.5, h - 20);

    pageControl.bounds = CGRectMake(0, 0, 150, 50);

    pageControl.numberOfPages = kCount; // 一共显示多少个圆点(多少页)

    // 设置非选中页的圆点颜色

    pageControl.pageIndicatorTintColor = [UIColor redColor];

    // 设置选中页的圆点颜色

    pageControl.currentPageIndicatorTintColor = [UIColor blueColor];

    

    // 禁止默认的点击功能

    pageControl.enabled = NO;

    

    [self.view addSubview:pageControl];

    _pageControl = pageControl;

}

#pragma mark - UIScrollView的代理方法

#pragma mark 当scrollView正在滚动的时候调用

- (void)scrollViewDidScroll:(UIScrollView *)scrollView

{

    int page = scrollView.contentOffset.x / scrollView.frame.size.width;

    //    NSLog(@"%d", page);

    

    // 设置页码

    _pageControl.currentPage = page;

}

@end

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢