IOS开发小功能1:引导页的开发
效果图如上,实现的是一个页面引导页,最后跳到主页面,主页面是一个navigationController,但是导航栏给我隐藏了。
文件目录:自己定制的viewcontroller以及navigationController
先贴代码吧。
1、首先是GuideViewController类
GuideViewController.h
#import <UIKit/UIKit.h>
#import "JKViewController.h" @interface GuideViewController : JKViewController <UIScrollViewDelegate> @property (strong,nonatomic) UIScrollView *scrollView;
@property (strong,nonatomic) NSMutableArray *slideImages;
@property (strong,nonatomic) UIPageControl *pageControl; @end
GuideViewController.m
#import "GuideViewController.h"
#import "JKNavigationController.h" @interface GuideViewController()
{
NSTimer *fanyeTime;
} @end @implementation GuideViewController @synthesize slideImages,scrollView;
@synthesize pageControl; -(void)dealloc
{
[fanyeTime release];
[scrollView release];
[slideImages release];
[pageControl release];
} -(void)viewDidLoad
{
[super viewDidLoad];
//定时器循环
fanyeTime = [NSTimer scheduledTimerWithTimeInterval: target:self selector:@selector(runTimePage) userInfo:nil repeats:YES];
//初始化 scrollView
self.scrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(, , , self.view.frame.size.height)];
scrollView.bounces = YES;
scrollView.pagingEnabled = YES;
scrollView.delegate = self;
scrollView.showsHorizontalScrollIndicator = NO;
[self.view addSubview:scrollView]; //初始化数组,并添加四张照片
slideImages = [[NSMutableArray alloc]initWithObjects:@"26.jpg",@"27.jpg",@"28.jpg",@"29.jpg",@" ",nil];
//初始化pageControl
self.pageControl = [[UIPageControl alloc]initWithFrame:CGRectMake(,,,)];
[pageControl setCurrentPageIndicatorTintColor:[UIColor redColor]];
[pageControl setPageIndicatorTintColor:[UIColor blackColor]];
pageControl.numberOfPages = [self.slideImages count] - ;
pageControl.currentPage = ;
[pageControl addTarget:self action:@selector(turnPage) forControlEvents:UIControlEventValueChanged];
[self.view addSubview:pageControl]; //创建四个图片 imageView
for (int i = ; i < [slideImages count]; i++) {
UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:[slideImages objectAtIndex:i]]]; imageView.frame = CGRectMake( * i, , , self.view.frame.size.height); [scrollView setContentSize:CGSizeMake( * [slideImages count], self.view.frame.size.height)];
[scrollView addSubview:imageView]; // 首页是第0页,默认从第1页开始的。所以+320。。。 } } //scrollView的委托函数
-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
NSTimeInterval secondsPerDay = **;
NSDate *thire = [NSDate dateWithTimeIntervalSinceNow:secondsPerDay];
[fanyeTime setFireDate:thire]; CGFloat pagewidth = self.scrollView.frame.size.width;
int currentPage = floor((self.scrollView.contentOffset.x - pagewidth/ ([slideImages count]+)) / pagewidth) + ; NSLog(@"currentPage------>%d",currentPage);
pageControl.currentPage = currentPage; NSLog(@"slideImages count------>%d",[slideImages count]); if (currentPage==([slideImages count]-)){ [self tiaozhuan];
} }
//
-(void)tiaozhuan
{
JKNavigationController *navigationController = [[[JKNavigationController alloc] initWithRootViewController:[[[JKViewController alloc]init]autorelease]]autorelease];
navigationController.navigationBarHidden = YES;
[self presentViewController:navigationController animated:YES completion:nil]; } //pagecontrol的方法
-(void)turnPage
{
int page = pageControl.currentPage;
NSLog(@"page----->%d",page);
[self.scrollView scrollRectToVisible:CGRectMake(*page,,,) animated:NO];
if (page == ) {
[fanyeTime invalidate];
[NSTimer scheduledTimerWithTimeInterval: target:self selector:@selector(tiaozhuan) userInfo:nil repeats:YES]; } }
//定时器绑定方法
-(void)runTimePage
{
int page = pageControl.currentPage;
page++;
pageControl.currentPage = page;
[self turnPage];
} - (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
2、接着是YCScroView类
YCScroView.h
#import <UIKit/UIKit.h>
@protocol TapImageDelegate <NSObject> -(void)tapImage:(int)index; @end @interface YCScroView : UIView @property (retain,nonatomic) id<TapImageDelegate>delegate; -(id)initWithArray:(NSArray*)array WithTitle:(NSString *)title WithFrame:(CGRect)frame;
@end
YCScroView.v
#import "YCScroView.h"
#define Max 10 @interface YCScroView() <UIScrollViewDelegate>
{
NSArray *_array;
int pageWidth,pageHight;
}
@property (strong,nonatomic)UIScrollView *scrollView;
@property (strong,nonatomic)NSMutableArray *slideImages;
@property (strong,nonatomic)UIPageControl *pageControl;
@property (strong,nonatomic)UITapGestureRecognizer *tap;
@end @implementation YCScroView
@synthesize scrollView,slideImages;
@synthesize pageControl;
@synthesize tap; -(id)initWithArray:(NSArray *)array WithTitle:(NSString *)title WithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
_array = array;
pageWidth = frame.size.width;
pageHight = frame.size.height; [self creatScollView];
}
return self;
} -(void)creatScollView
{
self.scrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(, , pageWidth, pageHight)];
scrollView.bounces = YES;
scrollView.pagingEnabled = YES;
scrollView.delegate = self;
scrollView.userInteractionEnabled = YES;
scrollView.showsHorizontalScrollIndicator = NO;
[self addSubview:scrollView];
slideImages = [NSMutableArray arrayWithArray:_array];
[slideImages retain];
self.pageControl = [[UIPageControl alloc]initWithFrame:CGRectMake(, pageHight-, , )];
[pageControl setCurrentPageIndicatorTintColor:[UIColor whiteColor]];
[pageControl setPageIndicatorTintColor:[UIColor grayColor]];
pageControl.numberOfPages = [_array count];
pageControl.currentPage = ;
// [pageControl addTarget:self action:@selector(turnPage) forControlEvents:UIControlEventValueChanged]; // 触摸mypagecontrol触发change这个方法事件
[self addSubview:pageControl]; for (int i =; i<[slideImages count]; i++) {
UIImageView *imageView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:[slideImages objectAtIndex:i]]];
imageView.frame = CGRectMake((pageWidth * i)+ pageWidth, , pageWidth, pageHight);
[scrollView addSubview:imageView]; // 首页是第0页,默认从第1页开始的。所以+320。。。
}
UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:[slideImages objectAtIndex:([slideImages count]-)]]];
imageView.frame = CGRectMake(, , pageWidth, pageHight);
[scrollView addSubview:imageView];
//取数组第一张图片,放在最后
imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:[slideImages objectAtIndex:]]];
imageView.frame = CGRectMake((pageWidth * ([slideImages count] + )) , , pageWidth, pageHight); // 添加第1页在最后 循环
[scrollView addSubview:imageView]; [scrollView setContentSize:CGSizeMake(pageWidth * ([slideImages count] + ), pageHight)]; // +上第1页和第4页 原理:4-[1-2-3-4]-1
[scrollView setContentOffset:CGPointMake(, )];
[self.scrollView scrollRectToVisible:CGRectMake(pageWidth,,pageWidth,pageHight) animated:NO]; [self addTapEventOnMyScrollView];
UIImageView *View=[[UIImageView alloc]initWithFrame:CGRectMake(, , pageWidth, )];
View.image=[UIImage imageNamed:@"huixian.png"];
[self addSubview:View]; UIImageView *View1=[[UIImageView alloc]initWithFrame:CGRectMake(, , , )];
View1.image=[UIImage imageNamed:@"lanxian.png"];
View1.tag=;
[self addSubview:View1]; } -(void)addTapEventOnMyScrollView;
{
tap = [[UIGestureRecognizer alloc] initWithTarget:self action:@selector(tapEvent)];
[scrollView addGestureRecognizer:tap];
} -(void)tapEvent
{
[self.delegate tapImage:pageControl.currentPage];
} -(void)scrollViewDidScroll:(UIScrollView *)scrollView
{
CGFloat pagewidth = self.scrollView.frame.size.width;
int page = floor((self.scrollView.contentOffset.x - pagewidth/([slideImages count]+))/pagewidth)+;
page --; // 默认从第二页开始
pageControl.currentPage = page;
} -(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
CGFloat pagewidth = self.scrollView.frame.size.width;
int currentPage = floor((self.scrollView.contentOffset.x - pagewidth/ ([slideImages count]+)) / pagewidth) + ;
if (currentPage==)
{
[self.scrollView scrollRectToVisible:CGRectMake( * [slideImages count],,,pageHight) animated:NO]; // 序号0 最后1页
}
else if (currentPage==([slideImages count]+))
{
[self.scrollView scrollRectToVisible:CGRectMake(,,,pageHight) animated:NO]; // 最后+1,循环第1页
} UIImageView* imageView=(UIImageView*)[self viewWithTag:];
[imageView removeFromSuperview]; UIImageView* imageview=[[UIImageView alloc]initWithImage:[UIImage imageNamed:@"lanxian.png"]];
imageview.frame=CGRectMake(pageControl.currentPage*, , , );
imageview.tag=;
[self addSubview:imageview];
} - (void)runTimePage
{
int page = pageControl.currentPage; // 获取当前的page
page++;
page = page > [slideImages count]- ? : page ;
pageControl.currentPage = page;
[self turnPage];
}
// pagecontrol 选择器的方法
- (void)turnPage
{
int page = pageControl.currentPage; // 获取当前的page
[self.scrollView scrollRectToVisible:CGRectMake(*(page+),,,) animated:NO]; // 触摸pagecontroller那个点点 往后翻一页 +1
}
-(void)dealloc{ [super dealloc];
} - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation == UIInterfaceOrientationPortrait);
} @end
这是来那个最主要的类,完成这两个类,基本上引导页就已经完成了。
IOS开发小功能1:引导页的开发的更多相关文章
- iOS - GitHub干货分享(APP引导页的高度集成 - DHGuidePageHUD - ②)
距上一篇博客"APP引导页的高度集成 - DHGuidePageHUD - ①"的发布有一段时间了, 后来又在SDK中补充了一些新的内容进去但是一直没来得及跟大家分享, 今天来跟大 ...
- 网页引导:jQuery插件实现的页面功能介绍引导页效果
现在很多网站不仅是介绍,更多的是有一些功能,怎么样让客户快速的知道网站有哪些功能呢?这里pagewalkthrough.js插件能帮我们实现,它是一个轻量级的jQuery插件,它可以帮助我们创建一个遮 ...
- jQuery插件实现的页面功能介绍引导页效果
新产品上线或是改版升级,我们会在用户第一次使用产品时建立一个使用向导,引导用户如何使用产品,如使用演示的方式逐一介绍界面上的功能模块,从而提升了用户体验和产品的亲和力. Helloweba.com之前 ...
- iOS常用小功能
CHENYILONG Blog 常用小功能 技术博客http://www.cnblogs.com/ChenYilong/ 新浪微博http://weibo.com/luohanchenyilong ...
- iOS 常用小功能 总结
常用小功能 iOS中的很多小功能都是非常简单的,几行代码就搞定了,比如打电话.打开网址.发邮件.发短信等 打电话 方法一(不被采用): 拨号之前会弹框询问用户是否拨号,拨完后能自动回到原应用 NSUR ...
- iOS - GitHub干货分享(APP引导页的高度集成 - DHGuidePageHUD - ①)
好长时间没更新博客, 是时候来一波干货分享了;APP引导页话不多说每一个APP都会用到,分量不重但是不可缺少,不论是APP的首次安装还是版本的更新,首先展现给用户眼前的也就只有它了吧,当然这里讲的不是 ...
- IOS开发小功能2:二维码扫描界面的设计(横线上下移动)
效果图如上,实现的是一个二维码扫描界面. 下面我贴出线条上下移动的代码,至于二维码的代码是用的第三方库. 首先是整体的结构: 注意下面的库文件一个都不能少,否则会报错. TLTiltHighlight ...
- iOS之小功能模块--彩虹动画进度条学习和自主封装改进
前言: 首先展示一下这个iOS小示例的彩色进度条动画效果: 阅读本文先说说好处:对于基础不好的读者,可以直接阅读文末尾的"如何使用彩虹动画进度条"章节,然后将我封装好的这个功能模块 ...
- 【Android】Android开发小功能,倒计时的实现。时间计时器倒计时功能。
作者:程序员小冰,GitHub主页:https://github.com/QQ986945193 新浪微博:http://weibo.com/mcxiaobing 首先给大家看一下我们今天这个最终实现 ...
随机推荐
- tortoise svn无法识别subversion check向下代码来解决
使用eclipse小工具subversion check代码后,tortoise svnclient(版本号1.8.8)无法识别,不显示svn图标. 根据每个试验后的线上不实际的解决方案.试过的方法: ...
- boadWorld Mark!
2014-11-21 xiazaiba.com>jiaocheng>972.html
- Linq入门演练---(1)基本用法-分组,排序,内连接
这一节大家共同学习下LINQ的基本用法,主要包括LINQ的分组,排序,和内外连接. 1.分组 基本语法: group element by key element 表示查询结果返回的元素,key表示 ...
- C#将Excel数据导入数据库(MySQL或Sql Server)
最近一直很忙,很久没写博客了.今天给大家讲解一下如何用C#将Excel数据导入Excel,同时在文章最后附上如何用sqlserver和mysql工具导入数据. 导入过程大致分为两步: 1.将excel ...
- PHP_零基础学php_2变量、预定义变量、预定义常量、表达式、运算符、程序控制流程
1.变量 PHP中使用$后跟变量名表示一个变量,变量名区分大小写. 变量的数据类型 整数类型 浮点类型 字符串类型 布尔类型 数组类型 对象 <html> <head> < ...
- 深入struts2(三)---工作机制和运行流程图
1 工作原理 1.1 体系架构 图2.1 struts2.0体系架构图 1.2 工作机制 针对上节体系架构图,以下分步说明运行流程 Ø client初始化一个指向Servle ...
- .net cookie
HttpCookie HttpRequest HttpResponse 这3个 类 . 之间的关系 . 请求 ,相应 都有一个 public HttpCookieCollection Cooki ...
- WebApi及Fiddler工具
WebApi及Fiddler工具 1.概述 曾经有人问:asp.net mvc和asp.net webapi区别在哪?这个其实不好回答的.可能因为mvc模式盛行的原因,webapi显得孤芳自赏了,让人 ...
- Sqlserver2008安装部署文档
Sqlserver2008部署文档 注意事项: 如果你要安装的是64位的服务器,并且是新机器.那么请注意,你需要首先需要给64系统安装一个.net framework,如果已经安装此功能,请略过这一步 ...
- ASP.NET 5+EntityFramework 7
爱与恨的抉择:ASP.NET 5+EntityFramework 7 EF7 的纠缠 ASP.NET 5 的无助 忘不了你的好 一开始列出的这个博文大纲,让我想到了很久之前的一篇博文:恋爱虽易,相 ...