`

IOS之自定义平铺导航UIScrollView+UIPageControl

 
阅读更多

MyPageView是自定义的UIView。实现效果如下。



 

1.MyPageView.h

#import <UIKit/UIKit.h>

@interface MyPageView : UIView<UIScrollViewDelegate>

@property(strong,nonatomic) UIScrollView* scrollView;
@property (strong, nonatomic) IBOutlet UIPageControl *pageControl;
-(void)initPageViewWithViewController:(UIViewController*)controller imagePaths:(NSArray*)imagePathArr;
@end

 2.MyPageView.m

#import "MyPageView.h"

@implementation MyPageView

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code
    }
    return self;
}

-(void)initPageViewWithViewController:(UIViewController*)controller imagePaths:(NSArray*)imagePathArr{
    NSInteger count = [imagePathArr count];
    CGFloat height = self.frame.size.height;
    CGFloat width = self.frame.size.width;
    
    self.scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, width, height)];
    self.scrollView.contentSize  = CGSizeMake(width*count, height);
    self.scrollView.showsVerticalScrollIndicator = FALSE;
    self.scrollView.showsHorizontalScrollIndicator = FALSE;
    //important
    [self.scrollView setPagingEnabled:YES];
    [self addSubview:self.scrollView];
    
    CGFloat pageControlWidth = 10.0f * count;
    CGFloat pageControlHeight = 15.0f;
    self.pageControl = [[UIPageControl alloc] initWithFrame:CGRectMake((width - pageControlWidth) / 2, height - pageControlHeight, pageControlWidth, pageControlHeight)];
    [self.pageControl setCurrentPage:0];
    [self.pageControl setNumberOfPages:count];
    [self.pageControl addTarget:self action:@selector(changePage:) forControlEvents:UIControlEventValueChanged];
    [self addSubview:self.pageControl];
    
    NSInteger index = 0;
    for(NSString *imagePath in imagePathArr){
        CGFloat xPos = index * width;
        UIImageView* imageView = [[UIImageView alloc] initWithFrame:CGRectMake(xPos, 0, width, height)];
        imageView.image = [UIImage imageNamed:imagePath];
        [self.scrollView addSubview:imageView];
        
        index++;
    }
    //implement UIScrollViewDelegate
    self.scrollView.delegate = self;
}

- (void) scrollViewDidScroll: (UIScrollView *) aScrollView
{
    CGFloat width = self.frame.size.width;
	CGPoint offset = aScrollView.contentOffset;
	self.pageControl.currentPage = offset.x / width;
}

//在点击pageControl时调用
- (IBAction)changePage:(id)sender
{
    CGFloat width = self.frame.size.width;
    [UIView animateWithDuration:0.3f animations:^{
        int whichPage = self.pageControl.currentPage;
        self.scrollView.contentOffset = CGPointMake(width * whichPage, 0.0f);
    }];
}

@end

 3.调用方法

MyPageView* pageView =  [[MyPageView alloc] initWithFrame:CGRectMake(0,44.0f,320.0f,140.0f)];
    NSMutableArray* arr = [NSMutableArray array];
    [arr addObject:@"m1.png"];
    [arr addObject:@"m2.png"];
   [pageView initPageViewWithViewController:self imagePaths:arr];
    [self.view addSubview:pageView];

 

  • 大小: 718.5 KB
分享到:
评论

相关推荐

    uiscrollView+uipageControl无缝循环可点击

    这个资源"uiscrollView+uipageControl无缝循环可点击"正是关于如何将这两个控件集成,以创建一个既能够无缝循环又可以点击的滚动视图。 `UIScrollView` 是苹果提供的一个视图类,它允许用户在内容超过视图边界时...

    UIScrollView + UIPageControl +NSTimer 做循环播放View

    在iOS开发中,`UIScrollView` 是一个非常重要的控件,它允许用户在内容超过视图范围时滚动查看。配合 `UIPageControl` 和 `NSTimer`,我们可以实现类似轮播图的效果,即循环播放多个视图。这个项目可能是一个简单的...

    TPCPageScrollView:UIScrollView + UIPageControl

    UIScrollView+UIPageControl 核心步骤 在图片显示完全(endDecelerating)时,重新设置三个UIImageView的图片内容 调整UIScrollView的偏移量,始终显示中间的UIImageView 如有图片1、2、3、4、5,默认存放图片5、1、...

    ios-自定义UIPageControl,实现同时显示不同大小的圆点.zip

    在iOS开发中,UIPageControl是苹果提供的一种用于展示页面滑动进度的控件,通常在滑动视图(如UIScrollView或UIPageViewController)中使用。标准的UIPageControl显示为一系列相同大小的小圆点,每个圆点代表一个...

    iOS UIScrollView and UIPageControl

    在iOS开发中,UIScrollView和UIPageControl是两个非常重要的组件,它们被广泛用于构建具有滚动功能和分页显示的应用界面。下面将详细讲解这两个组件的工作原理、如何使用以及它们之间的协同工作。 首先,...

    UIScrollView与UIPageControl

    UIScrollView与UIPageControl的简单应用以及一些非常基本的使用方法

    swift实现自动轮播图效果(UIScrollView+UIPageControl+Timer)

    在Swift编程中,创建一个自动轮播图效果通常涉及到多个组件的协同工作,如UIScrollView、UIPageControl和定时器(Timer)。在这个实例中,我们将会深入理解如何利用这些组件来实现这一功能。 首先,我们需要定义...

    UIScrollView循环+自动切换+UIPageControl可点击

    1.自动滑动图片,UIPageControl会随着图片滑动而改变; 2.用户可以手动切换图片,左右切换均可,当用户手动滑动图片时,图片停止自动切换; 3.实现了图片的循环播放; 4.UIPageControl可点击从而实现向左或右滑动,...

    IOS中表格的实现方法:UIScrollView+UILabel

    "IOS中表格的实现方法:UIScrollView+UILabel"的这种方法,是一种基础且灵活的解决方案,它允许开发者通过自定义的方式展示数据,并提供滚动功能。下面我们将详细探讨这个方法及其相关知识点。 首先,`...

    iOS基础——通过案例学知识之LaunchScreen、APPIcon、StatusBar、UIScrollView、UIPageControl

    总之,理解和掌握LaunchScreen、APPIcon、StatusBar、UIScrollView和UIPageControl这五个关键概念,对于开发高质量的iOS应用至关重要。它们不仅影响着应用的外观,还直接影响到用户的使用体验。通过实践案例,开发者...

    用UIScrollView和UIPageControl做的支持滚动查看图片的例子

    在iOS应用开发中,`UIScrollView`和`UIPageControl`是两个非常重要的组件,它们常被用来实现类似相册或滚动浏览多页内容的功能。在这个例子中,开发者使用纯代码方式,而非XIB(Interface Builder)文件,创建了一个...

    无缝可循环可点击的UIScrollVeiw+UIPageControl例子

    无缝可循环可点击的UIScrollVeiw+UIPageControl例子,不过没有用到重用机制,有需要的朋友可以拿去看看,要了5分,因为最近分比较紧缺,望体谅,没资源分或者没帐号的朋友可以发邮件给我,我传给你。tuxinxiang@...

    ios-Banner轮播 +自定义UIpageControl.zip

    在这个"ios-Banner轮播 +自定义UIpageControl.zip"压缩包中,我们很显然会涉及到如何在iOS应用中实现一个带有自定义UIPageControl的Banner轮播效果。UIPageControl是iOS SDK提供的一种原生控件,用于显示当前页面和...

    基于UIScrollView和UIPageControl的相册

    在iOS开发中,创建一个类似相册的应用是常见的需求,其中`UIScrollView`和`UIPageControl`是实现这一功能的关键组件。`UIScrollView`是苹果提供的一个可滚动视图,能够展示超过视图边界的内容,而`UIPageControl`则...

    IOS UIScrollView + UIButton 实现页面和顶部标签页水平滚动效果

    在iOS开发中,`UIScrollView` 是一个非常重要的控件,它允许用户在内容超过视图显示范围时进行滚动查看。而结合 `UIButton`,我们可以创建一个动态的、可滚动的顶部标签页,这种效果通常用于展示多个选项卡或类别。...

    UIWebView/UIScrollView+EGO实现下拉刷新

    在"UIWebView/UIScrollView+EGO实现下拉刷新"这个项目中,开发者可能采取了以下步骤: 1. **集成EGO库**:首先,开发者需要将EGO的源代码导入到项目中,或者通过CocoaPods等依赖管理工具进行安装。 2. **创建...

    ios-UIScrollView分页滑动宽度自定义.zip

    本示例“ios-UIScrollView分页滑动宽度自定义.zip”专注于讲解如何自定义UIScrollView的分页滑动宽度,以实现更灵活、个性化的用户界面。这通常涉及到的内容包括UIScrollView的基本使用、pagingEnabled属性的设置...

    UIScrollView+SnapKit例子.zip

    在iOS开发中,`UIScrollView` 是一个至关重要的控件,它允许用户在内容超过屏幕大小时进行滚动查看。本教程将深入讲解如何使用Swift和SnapKit框架来设置`UIScrollView`的AutoLayout约束,以实现更灵活和精确的界面...

    循环滚动ScrollView+自定义UIPageControl

    总的来说,“循环滚动ScrollView+自定义UIPageControl”的实现涉及到`UIScrollView`的无限循环滚动逻辑,`UIPageControl`的自定义以及两者之间的同步。这个过程需要对iOS的基础知识有深入了解,包括布局、滚动事件...

    uiscrollview+ pagecontrol 滑动变化

    swipe fingers to left or right can change the image when you click the little dot at the right corner, you also can switch the image page by page.

Global site tag (gtag.js) - Google Analytics