新特性页面

本文主要说明在项目开发中会涉及到的最最简单的新特性界面(实用UIScrollView展示多张图片的轮播)的处理。

代码示例:

新建一个专门的处理新特性界面的控制器,可以实用代码也可以用xib,在这里实用纯代码方式,创建一个控制器NewfeatureViewController。

头文件代码:

 1 //
 2 //  JMNewfeatureViewController.h
 3 //
 4
 5 #import <UIKit/UIKit.h>
 6
 7 typedef enum:NSInteger
 8 {
 9     NewfeatureTypeFromeSetting,     //从设置界面进入该页
10     NewfeatureTypeFromeWelcom,      //第一次安装的时候进入
11 } NewfeatureType;
12
13 @interface JMNewfeatureViewController : UIViewController
14
15 @property(nonatomic,assign)NewfeatureType newfeatureType;
16
17 @end

.m文件代码:

  1 //
  2 //  JMNewfeatureViewController.m
  3 //
  4
  5 #import "JMNewfeatureViewController.h"
  6 #import "JMTabBarViewController.h"
  7 #import "JMAboutTableViewController.h"
  8
  9 #define JMNewfeatureImageCount 4
 10
 11 @interface JMNewfeatureViewController () <UIScrollViewDelegate>
 12
 13 @property (nonatomic, weak) UIPageControl *pageControl;
 14
 15
 16 - (void)setupScrollView;
 17 - (void)setupPageControl;
 18 - (void)setupLastImageView:(UIImageView *)imageView;
 19 - (void)setupStartButton:(UIImageView *)imageView;
 20
 21 @end
 22
 23 @implementation JMNewfeatureViewController
 24
 25 #pragma mark ---------------------
 26 #pragma mark - CycLife
 27
 28 - (void)viewDidLoad
 29 {
 30     [super viewDidLoad];
 31
 32     [UIApplication sharedApplication].statusBarHidden = YES;
 33
 34     [self setupScrollView]; // 添加UISrollView
 35     [self setupPageControl];    // 添加pageControl
 36 }
 37
 38 #pragma mark ---------------------
 39 #pragma mark - Methods
 40
 41 //添加UISrollView
 42 - (void)setupScrollView
 43 {
 44     // 添加UISrollView
 45     UIScrollView *scrollView = [[UIScrollView alloc] init];
 46     scrollView.frame = self.view.bounds;
 47     scrollView.bounces = NO;
 48     scrollView.delegate = self;
 49     [self.view addSubview:scrollView];
 50
 51     // 添加图片
 52     CGFloat imageW = scrollView.width;
 53     CGFloat imageH = scrollView.height;
 54     for (int i = 0; i<JMNewfeatureImageCount; i++) {
 55         // 创建UIImageView
 56         UIImageView *imageView = [[UIImageView alloc] init];
 57         NSString *name = [NSString stringWithFormat:@"banner%d.jpg", i + 1];
 58         imageView.image = [UIImage imageNamed:name];
 59         [scrollView addSubview:imageView];
 60
 61         // 设置frame
 62         imageView.y = 0;
 63         imageView.width = imageW;
 64         imageView.height = imageH;
 65         imageView.x = i * imageW;
 66
 67         // 给最后一个imageView添加按钮
 68         if (i == JMNewfeatureImageCount - 1) {
 69             [self setupLastImageView:imageView];
 70         }
 71     }
 72
 73     // 3.设置其他属性
 74     scrollView.contentSize = CGSizeMake(JMNewfeatureImageCount * imageW, 0);
 75     scrollView.pagingEnabled = YES;
 76     scrollView.showsHorizontalScrollIndicator = NO;
 77     scrollView.backgroundColor = YYColor(246, 246, 246);
 78 }
 79
 80 //添加pageControl
 81 - (void)setupPageControl
 82 {
 83     // 添加PageControl
 84     UIPageControl *pageControl = [[UIPageControl alloc] init];
 85     pageControl.numberOfPages = JMNewfeatureImageCount;
 86     pageControl.centerX = self.view.width * 0.5;
 87     pageControl.centerY = self.view.height - 20;
 88     [self.view addSubview:pageControl];
 89
 90     // 设置圆点的颜色
 91     self.pageControl = pageControl;
 92     [self changePageControlImage:self.pageControl];
 93 }
 94
 95
 96 //设置最后一个UIImageView中的内容
 97 - (void)setupLastImageView:(UIImageView *)imageView
 98 {
 99     imageView.userInteractionEnabled = YES;
100
101     // 添加开始按钮
102     [self setupStartButton:imageView];
103 }
104
105 //添加开始按钮
106 - (void)setupStartButton:(UIImageView *)imageView
107 {
108     // 1.添加开始按钮
109     UIButton *startButton = [[UIButton alloc] init];
110     imageView.userInteractionEnabled = YES;
111     [imageView addSubview:startButton];
112
113     // 2.设置背景图片
114     [startButton setBackgroundImage:[UIImage imageNamed:@"banner_button_moren.jpg"] forState:UIControlStateNormal];
115     [startButton setBackgroundImage:[UIImage imageNamed:@"banner_button_dianji.jpg"] forState:UIControlStateHighlighted];
116
117     // 3.设置frame
118     startButton.size = startButton.currentBackgroundImage.size;
119     startButton.centerX = self.view.width * 0.5;
120     startButton.centerY = self.view.height * 0.8;
121
122     // 4.设置文字
123     [startButton setTitle:@"立即体验" forState:UIControlStateNormal];
124      [startButton setTitle:@"" forState:UIControlStateHighlighted];
125     [startButton addTarget:self action:@selector(start) forControlEvents:UIControlEventTouchUpInside];
126 }
127
128
129 //改变pagecontrol中圆点样式
130 - (void)changePageControlImage:(UIPageControl *)pageControl
131 {
132     static UIImage *imgCurrent = nil;
133     static UIImage *imgOther = nil;
134     static dispatch_once_t onceToken;
135
136     dispatch_once(&onceToken, ^{
137         imgCurrent = [UIImage imageNamed:@"yuan_01"];
138         imgOther = [UIImage imageNamed:@"yuan1"];
139     });
140
141
142     if (kSystemVersionMoreThan7) {
143         [pageControl setValue:imgCurrent forKey:@"_currentPageImage"];
144         [pageControl setValue:imgOther forKey:@"_pageImage"];
145     } else {
146         for (int i = 0;i < pageControl.numberOfPages; i++) {
147             UIImageView *imgv = [pageControl.subviews objectAtIndex:i];
148             imgv.frame = CGRectMake(imgv.frame.origin.x, imgv.frame.origin.y, 20, 20);
149             imgv.image = pageControl.currentPage == i ? imgCurrent : imgOther;
150         }
151     }
152 }
153
154 #pragma mark ---------------------
155 #pragma mark - Events
156
157 //立即体验
158 - (void)start
159 {
160     [UIApplication sharedApplication].statusBarHidden = NO;
161
162     //判断类型
163     if (self.newfeatureType == NewfeatureTypeFromeWelcom) {
164         JMTabBarViewController *tabVC = [[JMTabBarViewController alloc]init];
165         // 切换控制器
166         UIWindow *window = [UIApplication sharedApplication].keyWindow;
167         window.rootViewController = tabVC;
168     }else
169     {
170
171         [self.navigationController popViewControllerAnimated:YES];
172         [self.navigationController setNavigationBarHidden:NO animated:NO];
173     }
174
175 }
176
177 #pragma mark - UIScrollViewDelegate
178 - (void)scrollViewDidScroll:(UIScrollView *)scrollView
179 {
180     // 获得页码
181     CGFloat doublePage = scrollView.contentOffset.x / scrollView.width;
182     int intPage = (int)(doublePage + 0.5);
183
184     // 设置页码
185     self.pageControl.currentPage = intPage;
186     [self changePageControlImage:self.pageControl];
187 }
188
189 @end

注意点:

  下面的方法可以为pageControl提供当前状态和默认状态下的图片设置。

 1 //改变pagecontrol中圆点样式
 2 - (void)changePageControlImage:(UIPageControl *)pageControl
 3 {
 4     static UIImage *imgCurrent = nil;
 5     static UIImage *imgOther = nil;
 6     static dispatch_once_t onceToken;
 7
 8     dispatch_once(&onceToken, ^{
 9         imgCurrent = [UIImage imageNamed:@"yuan_01"];
10         imgOther = [UIImage imageNamed:@"yuan1"];
11     });
12
13
14     if (kSystemVersionMoreThan7) {
15         [pageControl setValue:imgCurrent forKey:@"_currentPageImage"];
16         [pageControl setValue:imgOther forKey:@"_pageImage"];
17     } else {
18         for (int i = 0;i < pageControl.numberOfPages; i++) {
19             UIImageView *imgv = [pageControl.subviews objectAtIndex:i];
20             imgv.frame = CGRectMake(imgv.frame.origin.x, imgv.frame.origin.y, 20, 20);
21             imgv.image = pageControl.currentPage == i ? imgCurrent : imgOther;
22         }
23     }
24 }

时间: 2024-10-09 04:46:45

新特性页面的相关文章

iOS开发实用技巧—项目新特性页面的处理

iOS开发实用技巧篇—项目新特性页面的处理 说明:本文主要说明在项目开发中会涉及到的最最简单的新特性界面(实用UIScrollView展示多张图片的轮播)的处理. 代码示例: 新建一个专门的处理新特性界面的控制器,可以实用代码也可以用xib,在这里实用纯代码方式,创建一个控制器NewfeatureViewController. 头文件代码: 1 // 2 // JMNewfeatureViewController.h 3 // 4 5 #import <UIKit/UIKit.h> 6 7 t

iOS_20_微博新特性页面

最终效果图: BeyondAppDelegate.m // // BeyondAppDelegate.m // 20_帅哥no微博 // // Created by beyond on 14-8-3. // Copyright (c) 2014年 com.beyond. All rights reserved. // #import "BeyondAppDelegate.h" #import "BeyondViewController.h" #import &quo

Spring4.1新特性——Spring缓存框架增强(转)

目录 Spring4.1新特性——综述 Spring4.1新特性——Spring核心部分及其他 Spring4.1新特性——Spring缓存框架增强 Spring4.1新特性——异步调用和事件机制的异常处理 Spring4.1新特性——数据库集成测试脚本初始化 Spring4.1新特性——Spring MVC增强 Spring4.1新特性——页面自动化测试框架Spring MVC Test HtmlUnit简介 Spring4.1新特性——静态资源处理增强 Spring 4.1提供了对jcach

iOS开发-项目新特性

iOS开发实用技巧—项目新特性页面的处理 iOS开发实用技巧篇—项目新特性页面的处理 说明:本文主要说明在项目开发中会涉及到的最最简单的新特性界面(实用UIScrollView展示多张图片的轮播)的处理. 代码示例: 新建一个专门的处理新特性界面的控制器,可以实用代码也可以用xib,在这里实用纯代码方式,创建一个控制器NewfeatureViewController. 头文件代码: 1 // 2 // JMNewfeatureViewController.h 3 // 4 5 #import <

iOS彩票项目--第五天,新特性引导页的封装、返回按钮的自定义、导航控制器的滑动返回以及自定义滑动返回功能

一.上次实现了在AppDelegate中通过判断app版本决定是否进入新特性页面,今天将AppDelegate中的一坨进行了封装.将self.window的根控制器到底应该为新特性界面,还是主页面,封装到了导航工具类ChaosGuideTool 封装,先决定外面怎么用,然后实现方法.外部通过类方法调用  + (UIViewController *)chooseRootVC; 外部的APPDelegate 只是调用方法 之前的业务判断没有改变,只是将数据的存储进行了封装 二.返回按钮的自定义 <1

让页面滑动流畅得飞起的新特性:Passive Event Listeners

版权声明:本文由陈志兴原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/153 来源:腾云阁 https://www.qcloud.com/community 在不久前的Google I/O 2016 Mobile Web Talk中,Google公布了一个让页面滑动更流畅的新特性Passive Event Listeners.该特性目前已经集成到Chrome51版本中.Chrome51上使用Passive Event L

WKWebView的新特性与使用

在WWDC2014中,苹果推出了最新的iOS8系统,其中也伴随着很多控件的更新与升级.其中全新的WebKit库让人很是兴奋.本文也将讲解到WebKit中更新的WKWebView控件的新特性与使用方法,它很好的解决了UIWebView存在的内存.加载速度等诸多问题. 环境信息: Mac OS X 10.10.1 Xcode 6.1.1 iOS 8.1 正文: 一.WKWebView新特性 在性能.稳定性.功能方面有很大提升(最直观的体现就是加载网页是占用的内存,模拟器加载百度与开源中国网站时,WK

Extjs5.0从入门到实战开发信息管理系统(Extjs基础、Extjs5新特性、Spring、Spring mvc、Mybatis)视频教程

Extjs5.0从入门到实战开发信息管理系统(Extjs基础.Extjs5新特性.Spring.Spring mvc.Mybatis)视频教程下载   联系QQ:1026270010 Extjs作为一款优秀的JS前端开发框架以其良好的架构.丰富的UI组件库.完善的文档和社区支持等诸多优点拥有广泛的市场应用空间,开发人员无需过多的关注HTML.CSS甚至各种常用JS算法,只需把精力放在业务逻辑上,利用各种组件的相互组合调用便可轻松而高效的开发出系统的前端页面. Extjs5在之前版本的基础上又推出

ES6新特性

ES6新特性概览 箭头操作符 如果你会C#或者Java,你肯定知道lambda表达式,ES6中新增的箭头操作符=>便有异曲同工之妙.它简化了函数的书写.操作符左边为输入的参数,而右边则是进行的操作以及返回的值Inputs=>outputs. 我们知道在JS中回调是经常的事,而一般回调又以匿名函数的形式出现,每次都需要写一个function,甚是繁琐.当引入箭头操作符后可以方便地写回调了.请看下面的例子. var array = [1, 2, 3]; //传统写法 array.forEach(f