思路:用scrollview的偏移量来实现

以下代码运行成功

#import <UIKit/UIKit.h>@interface MainViewController : UIViewController<UIScrollViewDelegate>
{//上面的scrollviewUIScrollView *scrollView0;UIPageControl *pageControl0;         //页面控制控件    tag 已在xib文件中设置为0NSMutableArray *arrImageViews;       //相当于datasourceBOOL isLoadScrollView0;              //是否加载
    BOOL pageControlUsed;}
@property (nonatomic,retain) IBOutlet UIScrollView *scrollView0;
@property (nonatomic,retain) IBOutlet UIPageControl *pageControl0;
@property BOOL isLoadScrollView0; - (IBAction)changePage:(id)sender;@end

#import "MainViewController.h"static NSUInteger fNumberOfPages = 4;@interface MainViewController (PrivateMethods)
- (void)loadScrollViewWithPage:(int)page;
- (void)scrollViewDidScroll:(UIScrollView *)sender;
@end@implementation MainViewController
@synthesize scrollView0, pageControl0;
@synthesize isLoadScrollView0;- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];if (self) {// Custom initialization
    }return self;
}- (void)viewDidLoad
{[super viewDidLoad];/* 初始化scrollView0相关内容*///获取scrollView0要显示的相关内容
    arrImageViews = [[NSMutableArray alloc]init];for (int i = 0; i < fNumberOfPages; i++) {UIImage *tempImage = [[UIImage alloc]init];NSString *imageName = [NSString stringWithFormat:@"pic0%d.png", i + 1];tempImage = [UIImage imageNamed:imageName];UIImageView *view = [[UIImageView alloc] initWithImage:tempImage];[arrImageViews addObject:view];}// scrollView0 初始化scrollView0.pagingEnabled = YES;scrollView0.contentSize = CGSizeMake(scrollView0.frame.size.width * fNumberOfPages, scrollView0.frame.size.height);scrollView0.showsHorizontalScrollIndicator = NO;scrollView0.showsVerticalScrollIndicator = NO;scrollView0.scrollsToTop = NO;scrollView0.delegate = self;scrollView0.tag = 1000;pageControl0.numberOfPages = fNumberOfPages;pageControl0.currentPage = 0;     //这个只改变了pagecontrol 被选中的位置
    isLoadScrollView0 = YES;//使用如下3句代码 实现默认显示 scrollview 指定的页CGPoint pt = CGPointMake(640, 0);      [scrollView0 setContentOffset:pt];        //设置scrollview 的偏移量[self scrollViewDidScroll:scrollView0];   //模拟scrollview 被滑动
}- (void)viewDidUnload
{[super viewDidUnload];// Release any retained subviews of the main view.// e.g. self.myOutlet = nil;
}- (IBAction)changePage:(id)sender
{if ([sender tag] == 0) {int page = pageControl0.currentPage;// load the visible page and the page on either side of it (to avoid flashes when the user starts scrolling)[self loadScrollViewWithPage:page - 1];[self loadScrollViewWithPage:page];[self loadScrollViewWithPage:page + 1];// update the scroll view to the appropriate pageCGRect frame = scrollView0.frame;frame.origin.x = frame.size.width * page;frame.origin.y = 0;[scrollView0 scrollRectToVisible:frame animated:YES];// Set the boolean used when scrolls originate from the UIPageControl. See scrollViewDidScroll: above.pageControlUsed = YES;}
}- (void)loadScrollViewWithPage:(int)page
{if (isLoadScrollView0 == YES) {if (page < 0)return;if (page >= fNumberOfPages)return;// 获取数据UIImageView *view = [arrImageViews objectAtIndex:page];CGRect frame = scrollView0.frame;frame.origin.x = frame.size.width * page;frame.origin.y = 0;view.frame = frame;[scrollView0 addSubview:view];}
}- (void)scrollViewDidScroll:(UIScrollView *)sender
{if ([sender tag] == 1000) {//设置加载的对象isLoadScrollView0 = YES;if (pageControlUsed) {return;}// Switch the indicator when more than 50% of the previous/next page is visibleCGFloat pageWidth = scrollView0.frame.size.width;NSLog(@"scrollView0.contentOffset.x  === %f",scrollView0.contentOffset.x );int page = floor((scrollView0.contentOffset.x - pageWidth / 2) / pageWidth) + 1;pageControl0.currentPage = page;[self loadScrollViewWithPage:page - 1];[self loadScrollViewWithPage:page];[self loadScrollViewWithPage:page + 1];}
}// At the begin of scroll dragging, reset the boolean used when scrolls originate from the UIPageControl
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{if (scrollView.tag == 1000) {pageControlUsed = NO;}
}// At the end of scroll animation, reset the boolean used when scrolls originate from the UIPageControl
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{if (scrollView.tag == 1000) {pageControlUsed = NO;}
}- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
//    return (interfaceOrientation == UIInterfaceOrientationPortrait);return NO;
}
@end

转载于:https://www.cnblogs.com/ygm900/archive/2013/05/22/3092309.html

实现 scrollview 默认显示指定的页码相关推荐

  1. pdf.js如何默认显示指定页码

    前两天由于工作需要,用到了pdf.js,里面有功能是需要显示出来pdf的指定页数,百度了很长时间, 发现百度上关于此类的问题的回答很少,可能都不会用到这个需求吧... 于是只能硬生生的去看看pdf.j ...

  2. jquery DataTable默认显示指定页

    主要添加iDisplayStart和iDisplayLength参数即可 $('#tbshow').DataTable({"paging": true,"aLengthM ...

  3. pdfjs 显示指定页码

    基于pdfjs 怎么用不描述了 后端返回响应数组 如 [2,3] 只显示第二页第三页 1 在viewer.js 定义全局变量var fpage=[2,3]; 2 搜索setInitialView方法 ...

  4. 进阶指令——df指令(作用:查看磁盘的空间)、free指令(作用:查看内存使用情况)、head指令(作用:查看一个文件的前n行,如果不指定n,则默认显示前10行)、tail指令、less指令

    1.df指令 作用:查看磁盘的空间 语法:#df -h -h表示以可读性较高的形式展示大小 2.free指令 作用:查看内存使用情况 语法:#free -m   -m表示以mb为单位查看 剩余的真实可 ...

  5. vb隐藏指定程序系统托盘图标_Windows环境设置系统托盘图标默认显示

    Windows环境设置系统托盘图标默认显示 背景 QQ.微信等IM软件通常都会在任务栏系统托盘处添加一个图标,用于提示新消息或方便将隐藏的窗口显示出来,但Windows有默认的设置,将不常用的图标隐藏 ...

  6. 如何实现分享网站文章到微信朋友圈时显示指定缩略图或LOGO

    当下朋友圈很火,很多企业都将微信朋友圈作为品牌传播的途径,经常会发一些精彩的文章到微信朋友圈供大家自发传播,这样的想法很好,对于优质的内容,网友们也乐于转发与朋友们分享,对品牌宣传与推广确实是有好处的 ...

  7. android自带中文字体,Android更换系统默认显示的字体使用自定义字体

    序言 上一篇Android 自定义字体,更换系统默认显示的字体使用自定义字体有讲到怎样指定控件显示指定字体,怎样整个软件显示指定字体,怎样WebView加载指定字体,但是还留下一个怎样修改整个系统的默 ...

  8. Linux 命令之 tail -- 在屏幕上显示指定文件的末尾若干行/显示文件尾部内容/查看文件尾部内容

    文章目录 一.命令介绍 二.常用选项 三.参考示例 (一)显示文件 file 的最后 10 行 (二)显示文件 file 的内容,从第 20 行至文件末尾 (三)显示文件file的最后10个字符 (四 ...

  9. echarts折线图默认显示最后一个点的数据

    echarts折线图默认显示最后一个点的数据 想要达到这种效果图如下: 如果你给折线图设置数据显示,那么要不就全部隐藏,要不就全部显示在折线上.实现指定点的显示就需要你自己去处理这个数据了. 方式有两 ...

最新文章

  1. C语言的数顺序输出与反序输出_只愿与一人十指紧扣_新浪博客
  2. hive 表的常用操作
  3. 【错误归纳】E: Sub-process /usr/bin/dpkg returned an error code (1)子进程 已安装 post-installation 脚本 返回了错误号 1
  4. Java获取当前路径和读取文件
  5. __get__,__getattr__和__getattribute方法
  6. hosts文件_电脑修改hosts文件屏蔽网站方法
  7. python串口通信_python通信串口pyserial安装及常用语句
  8. Js数组排序函数sort()介绍
  9. java导出word的几种方式
  10. Word中,Mathtype安装遇到的问题及解决方法
  11. 浩方 VS 真三国无双 全图
  12. 【Python】如何将文件中\xe8\x85\xbe\xe8字符转成中文?
  13. 远程连接桌面计算机的凭据,凭据的远程桌面连接 - Windows Server | Microsoft Docs
  14. linux 代码格式化工具下载,Linux 代码格式化工具 indent
  15. 我们一起学爪哇(2)
  16. RocketMQ(九)RocketMQ顺序消息
  17. python医药数据分析_Python数据分析案例-药品数据分析案例
  18. 小飞鱼通达二开 解决通达OA数据库服务不能启动的问题(图文)
  19. Android监听按键锁屏广播
  20. R语言基础之用R语言绘制各类函数图像

热门文章

  1. matlab读int16读文件_matlab文件读写.doc.doc
  2. 密码认证协议PAT怎么配置?
  3. mysql 5.5半同步复制_MySQL5.5配置安装半同步复制
  4. 国服被ban咋看_LOL国服十大神人霸哥
  5. 阿里云资深专家李国强:云原生的一些趋势和新方向
  6. Arthas 征文活动火热进行中,cherry 键盘等你来拿!(内附第三期中奖名单)
  7. 技术解析系列 | PouchContainer volume机制解析
  8. oracle 提取首字母,oracle 取字段文字拼音首字母
  9. apt包管理 Android,apt软件包管理学习(示例代码)
  10. linux中setfacl命令,setfacl命令