大家好。相信大家都对一些APP的新特性有所了解了。 一个好的新特性,会让用户得到不一样的体验,会让用户很清晰的了解该APP的新特性功能。
然后,请让小虾米来说说我所学习的内容吧 。
从图片分析当中,我们可以知道 它是一个UIScrollerView + UIPageControl。代码如下:
#import "JHNewfeatureViewController.h"
#import "JHTabBarViewController.h"
#define JHNewfeatureCount 4
@interface JHNewfeatureViewController () <UIScrollViewDelegate>
@property (nonatomic, weak) UIPageControl *pageControl;
@property (nonatomic, weak) UIScrollView *scrollView;
@end
@implementation JHNewfeatureViewController
- (void)viewDidLoad
{
[super viewDidLoad];
// 1.创建一个scrollView:显示所有的新特性图片
UIScrollView *scrollView = [[UIScrollView alloc] init];
scrollView.frame = self.view.bounds;
[self.view addSubview:scrollView];
self.scrollView = scrollView;
// 2.添加图片到scrollView中
CGFloat scrollW = scrollView.width;
CGFloat scrollH = scrollView.height;
for (int i = 0; i<JHNewfeatureCount; i++) {
UIImageView *imageView = [[UIImageView alloc] init];
imageView.width = scrollW;
imageView.height = scrollH;
imageView.y = 0;
imageView.x = i * scrollW;
// 显示图片
NSString *name = [NSString stringWithFormat:@"new_feature_%d", i + 1];
imageView.image = [UIImage imageNamed:name];
[scrollView addSubview:imageView];
// 如果是最后一个imageView,就往里面添加其他内容
if (i == JHNewfeatureCount - 1) {
[self setupLastImageView:imageView];
}
}
// 3.设置scrollView的其他属性
// 如果想要某个方向上不能滚动,那么这个方向对应的尺寸数值传0即可
scrollView.contentSize = CGSizeMake(JHNewfeatureCount * scrollW, 0);
scrollView.bounces = NO; // 去除弹簧效果
scrollView.pagingEnabled = YES;
scrollView.showsHorizontalScrollIndicator = NO;
scrollView.delegate = self;
// 4.添加pageControl:分页,展示目前看的是第几页
UIPageControl *pageControl = [[UIPageControl alloc] init];
pageControl.numberOfPages = JHNewfeatureCount;
pageControl.backgroundColor = [UIColor redColor];
pageControl.currentPageIndicatorTintColor = JHColor(253, 98, 42);
pageControl.pageIndicatorTintColor = JHColor(189, 189, 189);
pageControl.centerX = scrollW * 0.5;
pageControl.centerY = scrollH - 50;
[self.view addSubview:pageControl];
self.pageControl = pageControl;
}
来到这里我们就可以将一些图片加到UIScrollView上面了,并额外设置scrollview的一些属性来实现图片的滚动。当用户将图片滚到了最后一页 并设置最后一张图片,应该给用户一个分享的自由选择功能。
用一个按钮设置图片和文字。 实现代码如下:
- (void)setupLastImageView:(UIImageView *)imageView
{
// 开启交互功能
imageView.userInteractionEnabled = YES;
// 1.分享给大家(checkbox)
UIButton *shareBtn = [[UIButton alloc] init];
[shareBtn setImage:[UIImage imageNamed:@"new_feature_share_false"] forState:UIControlStateNormal];
[shareBtn setImage:[UIImage imageNamed:@"new_feature_share_true"] forState:UIControlStateSelected];
[shareBtn setTitle:@"分享给大家" forState:UIControlStateNormal];
[shareBtn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
shareBtn.titleLabel.font = [UIFont systemFontOfSize:15];
shareBtn.width = 200;
shareBtn.height = 30;
shareBtn.centerX = imageView.width * 0.5;
shareBtn.centerY = imageView.height * 0.65;
[shareBtn addTarget:self action:@selector(shareClick:) forControlEvents:UIControlEventTouchUpInside];
[imageView addSubview:shareBtn];
// 2.开始微博
UIButton *startBtn = [[UIButton alloc] init];
[startBtn setBackgroundImage:[UIImage imageNamed:@"new_feature_finish_button"] forState:UIControlStateNormal];
[startBtn setBackgroundImage:[UIImage imageNamed:@"new_feature_finish_button_highlighted"] forState:UIControlStateHighlighted];
startBtn.size = startBtn.currentBackgroundImage.size;
startBtn.centerX = shareBtn.centerX;
startBtn.centerY = imageView.height * 0.75;
[startBtn setTitle:@"开始微博" forState:UIControlStateNormal];
[startBtn addTarget:self action:@selector(startClick) forControlEvents:UIControlEventTouchUpInside];
[imageView addSubview:startBtn];
}
- (void)shareClick:(UIButton *)shareBtn
{
// 状态取反
shareBtn.selected = !shareBtn.isSelected;
}
- (void)startClick
{
UIWindow *window = [UIApplication sharedApplication].keyWindow;
window.rootViewController = [[JHTabBarViewController alloc] init];}
}
代码写得有点散,如果有什么建议或者是不好的地方,请发表评论您的看法,我们一同交流。再次感谢 !!
源码下载地址:https://github.com/ios-cjh/JHSinaWeibo
QQ: 584837022