实现 scrollview 默认显示指定的页码
思路:用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 默认显示指定的页码相关推荐
- pdf.js如何默认显示指定页码
前两天由于工作需要,用到了pdf.js,里面有功能是需要显示出来pdf的指定页数,百度了很长时间, 发现百度上关于此类的问题的回答很少,可能都不会用到这个需求吧... 于是只能硬生生的去看看pdf.j ...
- jquery DataTable默认显示指定页
主要添加iDisplayStart和iDisplayLength参数即可 $('#tbshow').DataTable({"paging": true,"aLengthM ...
- pdfjs 显示指定页码
基于pdfjs 怎么用不描述了 后端返回响应数组 如 [2,3] 只显示第二页第三页 1 在viewer.js 定义全局变量var fpage=[2,3]; 2 搜索setInitialView方法 ...
- 进阶指令——df指令(作用:查看磁盘的空间)、free指令(作用:查看内存使用情况)、head指令(作用:查看一个文件的前n行,如果不指定n,则默认显示前10行)、tail指令、less指令
1.df指令 作用:查看磁盘的空间 语法:#df -h -h表示以可读性较高的形式展示大小 2.free指令 作用:查看内存使用情况 语法:#free -m -m表示以mb为单位查看 剩余的真实可 ...
- vb隐藏指定程序系统托盘图标_Windows环境设置系统托盘图标默认显示
Windows环境设置系统托盘图标默认显示 背景 QQ.微信等IM软件通常都会在任务栏系统托盘处添加一个图标,用于提示新消息或方便将隐藏的窗口显示出来,但Windows有默认的设置,将不常用的图标隐藏 ...
- 如何实现分享网站文章到微信朋友圈时显示指定缩略图或LOGO
当下朋友圈很火,很多企业都将微信朋友圈作为品牌传播的途径,经常会发一些精彩的文章到微信朋友圈供大家自发传播,这样的想法很好,对于优质的内容,网友们也乐于转发与朋友们分享,对品牌宣传与推广确实是有好处的 ...
- android自带中文字体,Android更换系统默认显示的字体使用自定义字体
序言 上一篇Android 自定义字体,更换系统默认显示的字体使用自定义字体有讲到怎样指定控件显示指定字体,怎样整个软件显示指定字体,怎样WebView加载指定字体,但是还留下一个怎样修改整个系统的默 ...
- Linux 命令之 tail -- 在屏幕上显示指定文件的末尾若干行/显示文件尾部内容/查看文件尾部内容
文章目录 一.命令介绍 二.常用选项 三.参考示例 (一)显示文件 file 的最后 10 行 (二)显示文件 file 的内容,从第 20 行至文件末尾 (三)显示文件file的最后10个字符 (四 ...
- echarts折线图默认显示最后一个点的数据
echarts折线图默认显示最后一个点的数据 想要达到这种效果图如下: 如果你给折线图设置数据显示,那么要不就全部隐藏,要不就全部显示在折线上.实现指定点的显示就需要你自己去处理这个数据了. 方式有两 ...
最新文章
- 助力高校学子快速上手!昇腾AI处理器应用开发实践一览|华为昇腾师资培训沙龙北京场...
- 美国多个城市禁止、我国却蓬勃发展的人脸识别是什么样子?
- AI开发者大会之语音语义技术实践与应用:2020年7月3日《NLP在教育行业的应用》、《AI防疫-语音语义技术在政务联络场景中的应用》、《智能客服机器人在售前导购场景中的应用实践》
- leetcode —— 38. 外观数列
- JAVA异常使用_每个人都曾用过、但未必都用得好
- jmu-python-函数-找钱_6-1 jmu-python-杨辉三角
- python调用Java代码并执行--------jpype使用篇
- DBC2000是什么?DBC2000数据库文件详解
- 微信小程序中的常用布局方式(总结)
- 星空投影夜灯-隐私政策协议
- Memcached应用总结
- 数据结构_Java_基于 线性表-单链表的初始化、逆序、去重、非递减序列的合并(开辟新链表先整体插入一个链表全部元素,再遍历另外一个链表寻找合适位置插入 、开辟新链表实现舍弃原链表)等操作实现
- SetCapture GetCapture ReleaseCapture
- 如何查询网页游戏服务器记录,如何查询网页游戏服务器记录
- [公告] 2017年9月装机员系统更新
- 软件开发人员为什么不愿意写文档
- 沐风老师3DMAX管道建模教程
- 十年前范雅各布森关于bufferbloat的讨论
- python计算长方体的表面积_数学北师大五年级的下册的新编《长方体的表面积》课件(23页)-原创力文档...
- TQ2440 学习笔记—— 8、自己制作工具链
热门文章
- 华为语音解锁设置_今天才知道,华为自带文字转语音黑科技,1键按下这里即可开启...
- 从运维域看 Serverless 真的就是万能银弹吗?
- dubbogo 3.0:牵手 gRPC 走向云原生时代
- 云原生生态周报 Vol. 14 | K8s CVE 修复指南
- vi 命令linux退不出来,Linux 基本命令 vi的退出方法
- php 阻塞消息队列,linux 消息队列阻塞
- iphone屏蔽系统更新_iPhone手机经常提示更新系统,教你一招关闭方法,学到了
- 如何切换默认python版本_Debian中如何切换默认Python版本
- npm 删除依赖包_前端开发,npm会了吗?
- 打印首选项设置无效_文档打印小技巧分享--请收藏