下面這個視圖(多視圖滑動點擊切換)在很多App都有用到.使用封裝過的view,外部調用一個API就可以實現,十分的方便。
git代碼:https://github.com/HelloYeah/HYTabbarView.
//添加一個子控制器
代碼如下 |
複製代碼 |
-(void)addSubItemWithViewController:(UIViewController *)viewController;
|
1.外部傳一個控制器
代碼如下 |
複製代碼 |
-(void)addSubItemWithViewController:(UIViewController *)viewController{ UIButton*btn=[UIButtonbuttonWithType:UIButtonTypeCustom]; [self.tabbar addSubview:btn]; [self setupBtn:btnwithTitle:viewController.title]; [btn addTarget:self action:@selector(itemSelected:)forControlEvents:UIControlEventTouchUpInside]; [self.subViewControllers addObject:viewController]; }
|
2.KVO監聽當前選中View的序號值
代碼如下 |
複製代碼 |
NSInteger min = HYColumn / 2 ; if (_selectedIndex = self.titles.count - min) { UIButton * tempBtn = self.titles[self.titles.count - min - 1]; CGFloat btnX = (HYColumn % 2 ) ? tempBtn.center.x : (tempBtn.center.x + btn.frame.size.width * 0.5) ; CGFloat offsetX = _tabbar.center.x - btnX; [UIView animateWithDuration:0.25 animations:^{ _tabbar.contentOffset = CGPointMake(- offsetX, 0); }]; }else if (_selectedIndex > min && _selectedIndex < self.titles.count - min && self.titles.count > HYColumn ) { CGFloat btnX = (HYColumn % 2 ) ? btn.center.x : (btn.center.x - btn.frame.size.width * 0.5) ; CGFloat offsetX = _tabbar.center.x - btnX; [UIView animateWithDuration:0.25 animations:^{ _tabbar.contentOffset = CGPointMake( - offsetX, 0); }]; } else { [super observeValueForKeyPath:keyPath ofObject:object change:change context:context]; } } |