博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS开发实用技巧—项目新特性页面的处理
阅读量:7024 次
发布时间:2019-06-28

本文共 3949 字,大约阅读时间需要 13 分钟。

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

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

代码示例:

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

头文件代码:

复制代码
1 //  2 // JMNewfeatureViewController.h 3 // 4  5 #import 
6 7 typedef enum:NSInteger 8 { 9 NewfeatureTypeFromeSetting, //从设置界面进入该页 10 NewfeatureTypeFromeWelcom, //第一次安装的时候进入 11 } NewfeatureType;12 13 @interface JMNewfeatureViewController : UIViewController14 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 () 
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
< 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 - Events156 157 //立即体验 158 - (void)start159 {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 - UIScrollViewDelegate178 - (void)scrollViewDidScroll:(UIScrollView *)scrollView179 {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 }
复制代码

本例中,新特性部分的业务逻辑非常简单,可以直接套用。

实用图片替换pageControl的效果如下:

转载地址:http://sjvxl.baihongyu.com/

你可能感兴趣的文章
笔记本电池死而复生
查看>>
LINQ 图解
查看>>
日期和时间字符串格式化
查看>>
Python基础之range()
查看>>
springboot访问jsp页面
查看>>
UVALive5402 UVA579 Clock Hands【水题】
查看>>
CCF201512-4 送货(100分)
查看>>
oracle client安装(window版本)
查看>>
组件里传值到父级
查看>>
windows系统调用 遍历进程的虚拟地址
查看>>
centos7(linux)挂载ntfs格式的移动硬盘(转载)
查看>>
Python编程笔记(第一篇)Python基础语法
查看>>
全面总结Java泛型
查看>>
matlab repmat()
查看>>
可以让你少奋斗10年的工作经验
查看>>
仿iPhone滑屏操作
查看>>
main函数的形参;
查看>>
USACO 2.2
查看>>
docker 常用命令
查看>>
重构改善既有代码的设计-心得编写中.......
查看>>