`
jsntghf
  • 浏览: 2532836 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

UIPageControl的简单示例

    博客分类:
  • iOS
阅读更多

本文只列出核心代码,其他的请参考附件。

 

AppDelegate.h

 

#import <UIKit/UIKit.h>

@interface AppDelegate : NSObject <UIApplicationDelegate, UIScrollViewDelegate> {
	UIWindow *window;
	UIScrollView *scrollView;
	UIPageControl *pageControl;
    NSMutableArray *viewControllers;	
    BOOL pageControlUsed;
}

@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet UIScrollView *scrollView;
@property (nonatomic, retain) IBOutlet UIPageControl *pageControl;
@property (nonatomic, retain) NSMutableArray *viewControllers;

- (IBAction)changePage:(id)sender;

@end

 

AppDelegate.m

 

#import "AppDelegate.h"
#import "MyViewController.h"

static NSUInteger kNumberOfPages = 7;

@interface AppDelegate (PrivateMethods)

- (void)loadScrollViewWithPage:(int)page;
- (void)scrollViewDidScroll:(UIScrollView *)sender;

@end

@implementation AppDelegate

@synthesize window, scrollView, pageControl, viewControllers;

- (void)dealloc {
    [viewControllers release];
    [scrollView release];
    [pageControl release];
    [window release];
    [super dealloc];
}

- (void)applicationDidFinishLaunching:(UIApplication *)application {
    NSMutableArray *controllers = [[NSMutableArray alloc] init];
    for (unsigned i = 0; i < kNumberOfPages; i++) {
        [controllers addObject:[NSNull null]];
    }
    self.viewControllers = controllers;
    [controllers release];

    scrollView.pagingEnabled = YES;
    scrollView.contentSize = CGSizeMake(scrollView.frame.size.width * kNumberOfPages, scrollView.frame.size.height);
    scrollView.showsHorizontalScrollIndicator = NO;
    scrollView.showsVerticalScrollIndicator = NO;
    scrollView.scrollsToTop = NO;
    scrollView.delegate = self;

    pageControl.numberOfPages = kNumberOfPages;
    pageControl.currentPage = 0;

    [self loadScrollViewWithPage:0];
    [self loadScrollViewWithPage:1];
}

- (void)loadScrollViewWithPage:(int)page {
    if (page < 0) return;
    if (page >= kNumberOfPages) return;

    MyViewController *controller = [viewControllers objectAtIndex:page];
    if ((NSNull *)controller == [NSNull null]) {
        controller = [[MyViewController alloc] initWithPageNumber:page];
        [viewControllers replaceObjectAtIndex:page withObject:controller];
        [controller release];
    }

    if (nil == controller.view.superview) {
        CGRect frame = scrollView.frame;
        frame.origin.x = frame.size.width * page;
        frame.origin.y = 0;
        controller.view.frame = frame;
        [scrollView addSubview:controller.view];
    }
}

- (void)scrollViewDidScroll:(UIScrollView *)sender {
    if (pageControlUsed) {
        return;
    }
	
    CGFloat pageWidth = scrollView.frame.size.width;
    int page = floor((scrollView.contentOffset.x - pageWidth / 2) / pageWidth) + 1;
    pageControl.currentPage = page;

    [self loadScrollViewWithPage:page - 1];
    [self loadScrollViewWithPage:page];
    [self loadScrollViewWithPage:page + 1];
}

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {
    pageControlUsed = NO;
}

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
    pageControlUsed = NO;
}

- (IBAction)changePage:(id)sender {
    int page = pageControl.currentPage;
	
    [self loadScrollViewWithPage:page - 1];
    [self loadScrollViewWithPage:page];
    [self loadScrollViewWithPage:page + 1];
    
    CGRect frame = scrollView.frame;
    frame.origin.x = frame.size.width * page;
    frame.origin.y = 0;
    [scrollView scrollRectToVisible:frame animated:YES];
    
    pageControlUsed = YES;
}

@end

 

分享到:
评论

相关推荐

    UIpageControl.....Demo 分享

    这篇名为"UIpageControl...Demo分享"的文章,虽然没有提供详细的描述,但从标题我们可以推测它可能是一个关于如何使用UIPageControl的示例代码分享。作者可能通过一个简单的Demo展示了如何创建、配置和自定义...

    UIPageControl

    以下是一个简单的示例,展示如何在Swift中创建并使用UIPageControl: ```swift import UIKit class ViewController: UIViewController { let scrollView = UIScrollView() let pageControl = UIPageControl() ...

    ios-自定义动画的PageControl,用法参考UIPageControl。.zip

    6. **示例和文档**:项目中包含示例代码,帮助开发者快速理解和使用这个库。同时,虽然官方文档可能不全,但源码注释清晰,有助于理解其工作原理。 在实际应用中,自定义PageControl如ZJPageControl能够提升用户...

    使用UIPageControl的小例子

    默认情况下,UIPageControl是一个简单的点状指示器,但在这个例子中,开发者通过添加自定义背景和使用CATransition动画,使其更具视觉吸引力。 首先,我们需要理解Objective-C中的CATransition类。它是Core ...

    ios-仿写有过渡效果的UIPageControl.zip

    UIPageControl的标准行为是当用户滚动页面时,只会简单地改变当前页标的状态,而没有过渡动画。这个自定义版本的LHPageControlTry可能是通过添加动画效果来增强用户体验,可能包括渐变颜色变化、缩放或者其他动态...

    UIPageControl 的替代品

    以下是一个简单的代码示例: ```swift import DOPageControl let pageControl = DOPageControl(frame: CGRect(x: 0, y: view.bounds.height - 30, width: view.bounds.width, height: 30)) pageControl....

    iOS-Swift-PageControl:Swift 中的 UIPageControl 实现

    通过这个简单的示例,我们了解了如何在Swift中结合UIPageControl和UIScrollView来创建一个多页浏览的界面。这只是一个基本的实现,实际应用中可能需要处理更复杂的情况,比如动态加载内容、自定义UIPageControl样式...

    swift-swift3多样式自定义pageControl

    在iOS应用开发中,UIPageControl是用于指示用户在多页面视图中当前的位置和可滚动的页面数量的一个标准控件。然而,苹果提供的UIPageControl功能相对有限,仅提供了基本的圆点样式,无法满足所有设计需求。在这种...

    PageControl-demo

    这个"PageControl-demo"很可能是提供了一个关于如何使用和自定义UIPageControl的示例项目。让我们深入了解一下PageControl及其相关知识点。 **1. UIPageControl介绍** UIPageControl是苹果iOS SDK中的一个类,它是...

    swift-PageControl使用手势在网页间进行浏览的简单方式

    总之,`swift-PageControl使用手势在网页间进行浏览的简单方式`这个主题涵盖了`UIPageControl`的基本用法,以及如何通过手势增强页面浏览的交互性。通过学习和实践这些知识点,开发者可以创建更加用户友好的多页浏览...

    看公司项目文件做的一个demo

    首先,UIPageControl是一种简单但实用的控件,用于指示用户在多页面视图中的当前位置。它通常位于屏幕底部,显示为一系列小圆点,每个圆点代表一个页面。当用户在页面间滑动时,圆点会根据当前页面进行高亮,提供...

    UIPageContol自定义

    在iOS开发中,UIPageControl是一个非常常用的组件,它用于显示当前展示的页面以及可以滑动的总页面数。...而开源库如"Spaceman-Labs-SMPageControl"则为我们提供了丰富的自定义选项和示例,帮助我们快速实现这些功能。

    ios-简单的无限轮播.zip

    这个"ios-简单的无限轮播.zip"应该包含了一个实现这种功能的示例项目,非常适合那些刚开始接触iOS开发或者想要学习滚动视图(UIScrollView)应用的开发者。 滚动视图是iOS SDK中的一个基础控件,它允许用户在比屏幕...

    android viewflow 控件,示例,代码

    Android ViewFlow是一个强大的第三方库,专门用于创建流畅的水平滚动视图,类似于iOS中的UIPageControl。这个控件使得在Android应用中实现类似滑动浏览卡片的效果变得简单易行,通常用于展示一系列横向滑动的界面...

    分页滑动图片_封装版.zip

    在iOS开发中,分页滑动图片是一种常见的用户界面元素,尤其在展示产品图册、广告轮播或者相册浏览时。"分页滑动图片_封装版.zip"这个压缩包很可能包含了一个已经...只需简单集成,就能让应用的用户体验更加丰富和流畅。

    ios-简单的无限轮播滚动.zip

    这个名为"ios-简单的无限轮播滚动.zip"的压缩包中包含了一个实现简单无限轮播功能的示例,只有70多行代码,适合初学者理解和学习。 首先,无限轮播滚动的核心在于“无限”二字,这意味着用户在滚动到最后一个元素时...

    iOS实现轮播图banner示例

    以下是一个简单的自定义轮播图视图类`TJXView`的实现: 1. **定义协议(TJXViewDelegate)**: 创建一个代理协议`TJXViewDelegate`,包含一个方法`sendImageName:andName:`。这个方法会在用户点击轮播图时被调用,...

    IOS应用源码——一个简单的page scroll.zip

    本项目“一个简单的page scroll”提供了这样的源码示例,帮助开发者理解和实现这一功能。这个源码库主要涉及以下几个关键知识点: 1. **UIScrollView**:iOS中的UIScrollView是实现页面滚动的基础组件。它允许用户...

    ios 第一次开机引导画面

    这个过程旨在向初次使用的用户介绍应用的主要功能和操作方式,通过吸引人的视觉效果和简单的交互来提升用户的认知和使用体验。在实现这样的功能时,开发者会结合`UIPageControl`和`UIScrollView`两个关键组件。 `...

Global site tag (gtag.js) - Google Analytics