| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- //
- // DLCustomSlideView.m
- // DLSlideViewDemo
- //
- // Created by Dongle Su on 15-2-12.
- // Copyright (c) 2015年 dongle. All rights reserved.
- //
- #import "DLCustomSlideView.h"
- #define kDefaultTabbarBottomSpacing 0
- #define kDefaultCacheCount 4
- @implementation DLCustomSlideView{
- DLSlideView *slideView_;
- }
- - (void)commonInit{
- self.tabbarBottomSpacing = kDefaultTabbarBottomSpacing;
- }
- - (id)initWithCoder:(NSCoder *)aDecoder{
- if (self = [super initWithCoder:aDecoder]) {
- [self commonInit];
- }
- return self;
- }
- - (id)initWithFrame:(CGRect)frame{
- if (self = [super initWithFrame:frame]) {
- [self commonInit];
- }
- return self;
- }
- - (void)setup{
- self.tabbar.delegate = self;
- [self addSubview:self.tabbar];
-
- slideView_ = [[DLSlideView alloc] initWithFrame:CGRectMake(0, self.tabbar.frame.size.height+self.tabbarBottomSpacing, self.bounds.size.width, self.bounds.size.height-self.tabbar.frame.size.height-self.tabbarBottomSpacing)];
- slideView_.delegate = self;
- slideView_.dataSource = self;
- slideView_.baseViewController = self.baseViewController;
- [self addSubview:slideView_];
- }
- - (void)layoutSubviews{
- [super layoutSubviews];
-
- [self layoutBarAndSlide];
- }
- - (void)layoutBarAndSlide{
- self.tabbar.frame = CGRectMake(0, 0, CGRectGetWidth(self.tabbar.bounds), self.tabbar.frame.size.height);
- slideView_.frame = CGRectMake(0, self.tabbar.frame.size.height+self.tabbarBottomSpacing, CGRectGetWidth(self.bounds), CGRectGetHeight(self.bounds)-self.tabbar.frame.size.height-self.tabbarBottomSpacing);
- }
- - (void)setBaseViewController:(UIViewController *)baseViewController{
- slideView_.baseViewController = baseViewController;
- _baseViewController = baseViewController;
- }
- - (void)setSelectedIndex:(NSInteger)selectedIndex{
- _selectedIndex = selectedIndex;
- [slideView_ setSelectedIndex:selectedIndex];
- [self.tabbar setSelectedIndex:selectedIndex];
- }
- - (void)DLSlideTabbar:(id)sender selectAt:(NSInteger)index{
- [slideView_ setSelectedIndex:index];
- }
- - (NSInteger)numberOfControllersInDLSlideView:(DLSlideView *)sender{
- return [self.delegate numberOfTabsInDLCustomSlideView:self];
- }
- - (UIViewController *)DLSlideView:(DLSlideView *)sender controllerAt:(NSInteger)index{
- NSString *key = [NSString stringWithFormat:@"%ld", (long)index];
- if ([self.cache objectForKey:key]) {
- return [self.cache objectForKey:key];
- }
- else{
- UIViewController *ctrl = [self.delegate DLCustomSlideView:self controllerAt:index];
- [self.cache setObject:ctrl forKey:key];
- return ctrl;
- }
- }
- - (void)DLSlideView:(DLSlideView *)slide switchingFrom:(NSInteger)oldIndex to:(NSInteger)toIndex percent:(float)percent{
- [self.tabbar switchingFrom:oldIndex to:toIndex percent:percent];
- }
- - (void)DLSlideView:(DLSlideView *)slide didSwitchTo:(NSInteger)index{
- _selectedIndex = index;
- [self.tabbar setSelectedIndex:index];
- if (self.delegate && [self.delegate respondsToSelector:@selector(DLCustomSlideView:didSelectedAt:)]) {
- [self.delegate DLCustomSlideView:self didSelectedAt:index];
- }
- }
- - (void)DLSlideView:(DLSlideView *)slide switchCanceled:(NSInteger)oldIndex{
- [self.tabbar setSelectedIndex:oldIndex];
- }
- @end
|