登录 立即注册
金钱:

Code4App-iOS开发-iOS 开源代码库-iOS代码实例搜索-iOS特效示例-iOS代码例子下载-Code4App.com

MVVM模式写的一个仿照淘宝浏览足迹页面

[复制链接]
来自: josin22 分类: iOS精品源码 上传时间: 2016-6-13 12:22:02

项目介绍:



JSCarouselDemo    github



MVVM模式写的一个仿照淘宝浏览足迹页面. 重写的UICollectionViewLayout, 自定义滑动效果, 效果极佳。


主要实现的ViewController:
[Objective-C] 查看源文件 复制代码
#import "JSCarouselViewController.h"
#import "JSCarouselLayout.h"
#import "JSCarouselViewModel.h"
#import "JSCarouselUIService.h"

@interface JSCarouselViewController ()

@property (nonatomic, strong) UICollectionView    *carouselCollectionView;

@property (nonatomic, strong) JSCarouselViewModel *viewModel;

@property (nonatomic, strong) JSCarouselUIService *service;

@property (nonatomic, retain) UILabel *indexLabel;

@property (nonatomic, assign) NSInteger allCount;

@end

@implementation JSCarouselViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    self.title = @"JSCarousel";
    self.view.backgroundColor = [[UIColor whiteColor] colorWithAlphaComponent:0.8];
    self.automaticallyAdjustsScrollViewInsets = NO;
    /*  */
    [self.view addSubview:self.carouselCollectionView];
    /*  */
    [self.viewModel getData];
    [self.carouselCollectionView reloadData];
    /*  */
    _indexLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, CGRectGetMaxY(self.carouselCollectionView.frame), self.view.frame.size.width, 20)];
    _indexLabel.textAlignment = NSTextAlignmentCenter;
    _indexLabel.font = [UIFont systemFontOfSize:13];
    _allCount = [self.viewModel.data count];
    _indexLabel.text = [NSString stringWithFormat:@"浏览记录(1/%li)",_allCount];
    [self.view addSubview:_indexLabel];
    
}

#pragma mark - lazy load

- (JSCarouselViewModel *)viewModel{
    
    if (!_viewModel) {
        _viewModel = [[JSCarouselViewModel alloc] init];
    }
    return _viewModel;
}

- (JSCarouselUIService *)service{
    
    if (!_service) {
        _service = [[JSCarouselUIService alloc] init];
        _service.viewModel = self.viewModel;
    }
    return _service;
}

- (UICollectionView *)carouselCollectionView{
    
    if (!_carouselCollectionView) {
        
        JSCarouselLayout *layout                = [[JSCarouselLayout alloc] init];
        __weak typeof (self)weakSelf            = self;
        layout.carouselSlideIndexBlock          = ^(NSInteger index){
            weakSelf.indexLabel.text = [NSString stringWithFormat:@"浏览足迹(%li/%li)",index+1,_allCount];
        };
        layout.itemSize                         = CGSizeMake(190, 262);
        _carouselCollectionView                 = [[UICollectionView alloc] initWithFrame:CGRectMake(0, 64, self.view.frame.size.width, 270)
                                                     collectionViewLayout:layout];
        _carouselCollectionView.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:0.5];
        _carouselCollectionView.dataSource      = self.service;
        _carouselCollectionView.delegate        = self.service;
        _carouselCollectionView.showsHorizontalScrollIndicator = NO;
        _carouselCollectionView.showsVerticalScrollIndicator = NO;
        [_carouselCollectionView registerNib:[UINib nibWithNibName:@"JSCarouselGoodsCell" bundle:nil]
                  forCellWithReuseIdentifier:@"JSCarouselGoodsCell"];
    }
    return _carouselCollectionView;
}

@end


DEMO直接下载:
运行demo可以查看效果,而且在demo中,针对各种文本和图文的实现都有详细的用例


相关源码推荐:

我来说两句
*滑动验证:
所有评论(79)
Delouch 2016-6-13 16:35:51
强烈支持楼主ing……
回复
Delouch 2016-6-13 16:39:24
学习学习!
回复
ogqs0493 2016-6-13 16:41:47
我只是路过打酱油的。
回复
heartbreaker_77 2016-6-13 16:43:30
精华内容,楼主V5!
回复
nkyt0214 2016-6-13 17:06:05
虽不明,但觉厉!
回复
stevee 2016-6-13 17:32:54
楼主用心了,内容非常精彩。
回复
Objective-PLA 2016-6-13 17:37:35
我只是路过打酱油的。
回复
phoiu 2016-6-13 18:20:44
感谢分享,Code4App有你更精彩
回复
MeeAron 2016-6-14 00:29:17
强烈支持楼主ing……
回复
提取码:  下载次数:167 状态:已购或VIP 售价:0(原价:10)金钱 下载权限:初级码农 
2597 2 167
联系我们
首页/微信公众账号投稿

帖子代码编辑/版权问题

QQ:435399051,742864542

如何获得代码达人称号?

代码贡献英雄榜
用户名 下载数
通过邮件订阅最新 Code4App 信息
上一条 /4 下一条
联系我们
关闭
合作电话:
13802416937
Email:
435399051@qq.com
商务市场合作/投稿
问题反馈及帮助
联系我们

广告投放| Github|申请友链|手机版|Code4App ( 粤ICP备15117877号-1 )

快速回复 返回顶部 返回列表