本文只列出核心代码,其他的请参考附件。
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展示了如何创建、配置和自定义...
以下是一个简单的示例,展示如何在Swift中创建并使用UIPageControl: ```swift import UIKit class ViewController: UIViewController { let scrollView = UIScrollView() let pageControl = UIPageControl() ...
6. **示例和文档**:项目中包含示例代码,帮助开发者快速理解和使用这个库。同时,虽然官方文档可能不全,但源码注释清晰,有助于理解其工作原理。 在实际应用中,自定义PageControl如ZJPageControl能够提升用户...
默认情况下,UIPageControl是一个简单的点状指示器,但在这个例子中,开发者通过添加自定义背景和使用CATransition动画,使其更具视觉吸引力。 首先,我们需要理解Objective-C中的CATransition类。它是Core ...
UIPageControl的标准行为是当用户滚动页面时,只会简单地改变当前页标的状态,而没有过渡动画。这个自定义版本的LHPageControlTry可能是通过添加动画效果来增强用户体验,可能包括渐变颜色变化、缩放或者其他动态...
以下是一个简单的代码示例: ```swift import DOPageControl let pageControl = DOPageControl(frame: CGRect(x: 0, y: view.bounds.height - 30, width: view.bounds.width, height: 30)) pageControl....
通过这个简单的示例,我们了解了如何在Swift中结合UIPageControl和UIScrollView来创建一个多页浏览的界面。这只是一个基本的实现,实际应用中可能需要处理更复杂的情况,比如动态加载内容、自定义UIPageControl样式...
在iOS应用开发中,UIPageControl是用于指示用户在多页面视图中当前的位置和可滚动的页面数量的一个标准控件。然而,苹果提供的UIPageControl功能相对有限,仅提供了基本的圆点样式,无法满足所有设计需求。在这种...
这个"PageControl-demo"很可能是提供了一个关于如何使用和自定义UIPageControl的示例项目。让我们深入了解一下PageControl及其相关知识点。 **1. UIPageControl介绍** UIPageControl是苹果iOS SDK中的一个类,它是...
总之,`swift-PageControl使用手势在网页间进行浏览的简单方式`这个主题涵盖了`UIPageControl`的基本用法,以及如何通过手势增强页面浏览的交互性。通过学习和实践这些知识点,开发者可以创建更加用户友好的多页浏览...
首先,UIPageControl是一种简单但实用的控件,用于指示用户在多页面视图中的当前位置。它通常位于屏幕底部,显示为一系列小圆点,每个圆点代表一个页面。当用户在页面间滑动时,圆点会根据当前页面进行高亮,提供...
在iOS开发中,UIPageControl是一个非常常用的组件,它用于显示当前展示的页面以及可以滑动的总页面数。...而开源库如"Spaceman-Labs-SMPageControl"则为我们提供了丰富的自定义选项和示例,帮助我们快速实现这些功能。
这个"ios-简单的无限轮播.zip"应该包含了一个实现这种功能的示例项目,非常适合那些刚开始接触iOS开发或者想要学习滚动视图(UIScrollView)应用的开发者。 滚动视图是iOS SDK中的一个基础控件,它允许用户在比屏幕...
Android ViewFlow是一个强大的第三方库,专门用于创建流畅的水平滚动视图,类似于iOS中的UIPageControl。这个控件使得在Android应用中实现类似滑动浏览卡片的效果变得简单易行,通常用于展示一系列横向滑动的界面...
在iOS开发中,分页滑动图片是一种常见的用户界面元素,尤其在展示产品图册、广告轮播或者相册浏览时。"分页滑动图片_封装版.zip"这个压缩包很可能包含了一个已经...只需简单集成,就能让应用的用户体验更加丰富和流畅。
这个名为"ios-简单的无限轮播滚动.zip"的压缩包中包含了一个实现简单无限轮播功能的示例,只有70多行代码,适合初学者理解和学习。 首先,无限轮播滚动的核心在于“无限”二字,这意味着用户在滚动到最后一个元素时...
以下是一个简单的自定义轮播图视图类`TJXView`的实现: 1. **定义协议(TJXViewDelegate)**: 创建一个代理协议`TJXViewDelegate`,包含一个方法`sendImageName:andName:`。这个方法会在用户点击轮播图时被调用,...
本项目“一个简单的page scroll”提供了这样的源码示例,帮助开发者理解和实现这一功能。这个源码库主要涉及以下几个关键知识点: 1. **UIScrollView**:iOS中的UIScrollView是实现页面滚动的基础组件。它允许用户...
这个过程旨在向初次使用的用户介绍应用的主要功能和操作方式,通过吸引人的视觉效果和简单的交互来提升用户的认知和使用体验。在实现这样的功能时,开发者会结合`UIPageControl`和`UIScrollView`两个关键组件。 `...