iOS开发实用技巧—项目新特性页面的处理
2014-12-16 19:04
453 查看
iOS开发实用技巧篇—项目新特性页面的处理
说明:本文主要说明在项目开发中会涉及到的最最简单的新特性界面(实用UIScrollView展示多张图片的轮播)的处理。
代码示例:
新建一个专门的处理新特性界面的控制器,可以实用代码也可以用xib,在这里实用纯代码方式,创建一个控制器NewfeatureViewController。
头文件代码:
.m文件代码:
注意点:
下面的方法可以为pageControl提供当前状态和默认状态下的图片设置。
本例中,新特性部分的业务逻辑非常简单,可以直接套用。
实用图片替换pageControl的效果如下:
说明:本文主要说明在项目开发中会涉及到的最最简单的新特性界面(实用UIScrollView展示多张图片的轮播)的处理。
代码示例:
新建一个专门的处理新特性界面的控制器,可以实用代码也可以用xib,在这里实用纯代码方式,创建一个控制器NewfeatureViewController。
头文件代码:
// // JMNewfeatureViewController.h // #import <UIKit/UIKit.h> typedef enum:NSInteger { NewfeatureTypeFromeSetting, //从设置界面进入该页 NewfeatureTypeFromeWelcom, //第一次安装的时候进入 } NewfeatureType; @interface JMNewfeatureViewController : UIViewController @property(nonatomic,assign)NewfeatureType newfeatureType; @end
.m文件代码:
// // JMNewfeatureViewController.m // #import "JMNewfeatureViewController.h" #import "JMTabBarViewController.h" #import "JMAboutTableViewController.h" #define JMNewfeatureImageCount 4 @interface JMNewfeatureViewController () <UIScrollViewDelegate> @property (nonatomic, weak) UIPageControl *pageControl; - (void)setupScrollView; - (void)setupPageControl; - (void)setupLastImageView:(UIImageView *)imageView; - (void)setupStartButton:(UIImageView *)imageView; @end @implementation JMNewfeatureViewController #pragma mark --------------------- #pragma mark - CycLife - (void)viewDidLoad { [super viewDidLoad]; [UIApplication sharedApplication].statusBarHidden = YES; [self setupScrollView]; // 添加UISrollView [self setupPageControl]; // 添加pageControl } #pragma mark --------------------- #pragma mark - Methods //添加UISrollView - (void)setupScrollView { // 添加UISrollView UIScrollView *scrollView = [[UIScrollView alloc] init]; scrollView.frame = self.view.bounds; scrollView.bounces = NO; scrollView.delegate = self; [self.view addSubview:scrollView]; // 添加图片 CGFloat imageW = scrollView.width; CGFloat imageH = scrollView.height; for (int i = 0; i<JMNewfeatureImageCount; i++) { // 创建UIImageView UIImageView *imageView = [[UIImageView alloc] init]; NSString *name = [NSString stringWithFormat:@"banner%d.jpg", i + 1]; imageView.image = [UIImage imageNamed:name]; [scrollView addSubview:imageView]; // 设置frame imageView.y = 0; imageView.width = imageW; imageView.height = imageH; imageView.x = i * imageW; // 给最后一个imageView添加按钮 if (i == JMNewfeatureImageCount - 1) { [self setupLastImageView:imageView]; } } // 3.设置其他属性 scrollView.contentSize = CGSizeMake(JMNewfeatureImageCount * imageW, 0); scrollView.pagingEnabled = YES; scrollView.showsHorizontalScrollIndicator = NO; scrollView.backgroundColor = YYColor(246, 246, 246); } //添加pageControl - (void)setupPageControl { // 添加PageControl UIPageControl *pageControl = [[UIPageControl alloc] init]; pageControl.numberOfPages = JMNewfeatureImageCount; pageControl.centerX = self.view.width * 0.5; pageControl.centerY = self.view.height - 20; [self.view addSubview:pageControl]; // 设置圆点的颜色 self.pageControl = pageControl; [self changePageControlImage:self.pageControl]; } //设置最后一个UIImageView中的内容 - (void)setupLastImageView:(UIImageView *)imageView { imageView.userInteractionEnabled = YES; // 添加开始按钮 [self setupStartButton:imageView]; } //添加开始按钮 - (void)setupStartButton:(UIImageView *)imageView { // 1.添加开始按钮 UIButton *startButton = [[UIButton alloc] init]; imageView.userInteractionEnabled = YES; [imageView addSubview:startButton]; // 2.设置背景图片 [startButton setBackgroundImage:[UIImage imageNamed:@"banner_button_moren.jpg"] forState:UIControlStateNormal]; [startButton setBackgroundImage:[UIImage imageNamed:@"banner_button_dianji.jpg"] forState:UIControlStateHighlighted]; // 3.设置frame startButton.size = startButton.currentBackgroundImage.size; startButton.centerX = self.view.width * 0.5; startButton.centerY = self.view.height * 0.8; // 4.设置文字 [startButton setTitle:@"立即体验" forState:UIControlStateNormal]; [startButton setTitle:@"" forState:UIControlStateHighlighted]; [startButton addTarget:self action:@selector(start) forControlEvents:UIControlEventTouchUpInside]; } //改变pagecontrol中圆点样式 - (void)changePageControlImage:(UIPageControl *)pageControl { static UIImage *imgCurrent = nil; static UIImage *imgOther = nil; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ imgCurrent = [UIImage imageNamed:@"yuan_01"]; imgOther = [UIImage imageNamed:@"yuan1"]; }); if (kSystemVersionMoreThan7) { [pageControl setValue:imgCurrent forKey:@"_currentPageImage"]; [pageControl setValue:imgOther forKey:@"_pageImage"]; } else { for (int i = 0;i < pageControl.numberOfPages; i++) { UIImageView *imgv = [pageControl.subviews objectAtIndex:i]; imgv.frame = CGRectMake(imgv.frame.origin.x, imgv.frame.origin.y, 20, 20); imgv.image = pageControl.currentPage == i ? imgCurrent : imgOther; } } } #pragma mark --------------------- #pragma mark - Events //立即体验 - (void)start { [UIApplication sharedApplication].statusBarHidden = NO; //判断类型 if (self.newfeatureType == NewfeatureTypeFromeWelcom) { JMTabBarViewController *tabVC = [[JMTabBarViewController alloc]init]; // 切换控制器 UIWindow *window = [UIApplication sharedApplication].keyWindow; window.rootViewController = tabVC; }else { [self.navigationController popViewControllerAnimated:YES]; [self.navigationController setNavigationBarHidden:NO animated:NO]; } } #pragma mark - UIScrollViewDelegate - (void)scrollViewDidScroll:(UIScrollView *)scrollView { // 获得页码 CGFloat doublePage = scrollView.contentOffset.x / scrollView.width; int intPage = (int)(doublePage + 0.5); // 设置页码 self.pageControl.currentPage = intPage; [self changePageControlImage:self.pageControl]; } @end
注意点:
下面的方法可以为pageControl提供当前状态和默认状态下的图片设置。
//改变pagecontrol中圆点样式 - (void)changePageControlImage:(UIPageControl *)pageControl { static UIImage *imgCurrent = nil; static UIImage *imgOther = nil; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ imgCurrent = [UIImage imageNamed:@"yuan_01"]; imgOther = [UIImage imageNamed:@"yuan1"]; }); if (kSystemVersionMoreThan7) { [pageControl setValue:imgCurrent forKey:@"_currentPageImage"]; [pageControl setValue:imgOther forKey:@"_pageImage"]; } else { for (int i = 0;i < pageControl.numberOfPages; i++) { UIImageView *imgv = [pageControl.subviews objectAtIndex:i]; imgv.frame = CGRectMake(imgv.frame.origin.x, imgv.frame.origin.y, 20, 20); imgv.image = pageControl.currentPage == i ? imgCurrent : imgOther; } } }
本例中,新特性部分的业务逻辑非常简单,可以直接套用。
实用图片替换pageControl的效果如下:
相关文章推荐
- iOS开发实用技巧篇—项目新特性页面的处理
- OS开发实用技巧篇—项目新特性页面的处理
- iOS开发小技巧--适当的清空模型中的某个数据,达到自己的需求,记得最后将数据还原(百思项目评论页面处理最热评论)
- 项目开发技巧(三):提升JSP页面响应速度
- iOS开发实用技巧——屏幕适配研究
- iOS开发实用技巧—身份证的正则校验
- iOS开发实用技巧——屏幕适配研究
- Windows Phone 实用开发技巧(9):自定义Windows Phone 页面切换动画 推荐
- iOS开发之路--微博新特性页面
- Windows Phone 实用开发技巧(10):Windows Phone 中处理图片的技巧 推荐
- iOS项目开发小技巧 (四) --实现类似弹出窗口(View)
- Android开发实用技巧:快速修改项目包名
- Windows Phone实用开发技巧(32):照片角度处理
- 项目开发技巧(五):jsp页面链接中文文件,不能打开中文文件的问题
- 项目开发技巧(六):页面中链接.按钮使用的一些技巧
- iOS项目开发小技巧 (三) --UITableView实现Cell左划删除等自定义功能
- iOS开发实用技巧——如何调用第三方APP
- iOS开发实用技巧——调用Home+PowerButton实现当前屏幕截屏
- Windows Phone 实用开发技巧(9):自定义Windows Phone 页面切换动画
- iOS开发实用技巧—打包app发给测试人员测试