iOS开发学习之UIScrollerView实现新特性

 大家好。相信大家都对一些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




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值