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

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

说明:本文主要说明在项目开发中会涉及到的最最简单的新特性界面(实用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 }

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

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

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

 

你可能感兴趣的:(ios开发)