热更新demo

myTopicCenterController.m 16KB

    // // myTopicCenterController.m // ThePaperBase // // Created by YoungLee on 15/8/26. // Copyright (c) 2015年 scar1900. All rights reserved. // #import "myTopicCenterController.h" #import "ATPagingView.h" #import "myAttentionController.h" #import "myCreateController.h" #import "RubberBandView.h" #import "creatTopicController.h" #import "ZSAnimationView.h" @interface myTopicCenterController ()<ATPagingViewDelegate,UIGestureRecognizerDelegate> { UIPanGestureRecognizer *panGestureRecognizer; UISwipeGestureRecognizer *swipeGesture; } @property(nonatomic, strong)UIView *backView; @property(nonatomic, strong)UIButton *myCreateBtn; @property(nonatomic, strong)UIButton *myAttenBtn; @property(nonatomic, strong)ATPagingView *pageView; @property(nonatomic, strong)NSMutableArray *pageViewControllers; @property(nonatomic, strong)NSMutableArray *viewControllers; @property(nonatomic, strong)ZSAnimationView *menuRubberView; @property(nonatomic, strong)UILabel *markLabel; @property(nonatomic, strong)UIButton *selectBtn; @property(nonatomic, strong)UIButton *editBtn; @property(nonatomic, strong)UIButton *createBtn; @end @implementation myTopicCenterController @synthesize delegate; @synthesize currentIndex = _currentIndex; - (void)viewDidLoad { [super viewDidLoad]; self.titleStr = @"我的话题"; self.view.frame = CGRectMake(0, CGRectGetHeight(self.naviBar.bounds)-1, rect_screen.size.width, rect_screen.size.height-CGRectGetHeight(self.naviBar.bounds)+1); self.backView.frame = self.view.frame; [self.view addSubview:self.backView]; [self addTabButtns]; [self addPageView]; swipeGesture = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(swipeHandler:)]; swipeGesture.direction = UISwipeGestureRecognizerDirectionLeft; swipeGesture.delegate = self; [self.backView addGestureRecognizer:swipeGesture]; [self.naviBar addSubview:self.selectBtn]; [self.selectBtn addSubview:self.editBtn]; [self.selectBtn addSubview:self.createBtn]; [self.selectBtn makeConstraints:^(MASConstraintMaker *make) { make.left.equalTo(self.naviBar.right).offset(-60); make.width.equalTo(@60); make.top.equalTo(self.naviBar.top).offset(20); make.height.equalTo(@40); }]; [self.editBtn makeConstraints:^(MASConstraintMaker *make) { make.left.equalTo(self.selectBtn.right).offset(-60); make.width.equalTo(@60); make.top.equalTo(self.naviBar.top).offset(20); make.height.equalTo(@40); }]; [self.createBtn makeConstraints:^(MASConstraintMaker *make) { make.left.equalTo(self.selectBtn.right).offset(-60); make.width.equalTo(@60); make.top.equalTo(self.naviBar.top).offset(20); make.height.equalTo(@40); }]; } - (void)swipeHandler:(UISwipeGestureRecognizer*)gestureRecognizer{ if (self.pageView.currentPageIndex == 0 ) { self.myCreateBtn.selected = !self.myCreateBtn.selected; self.myAttenBtn.selected = !self.myAttenBtn.selected; // [self.menuRubberView pullWithOffSet:(rect_screen.size.width)/2]; // [self.menuRubberView recoverStateAnimation]; [self.menuRubberView animationStartWithOffsetX:3*rect_screen.size.width/4 - 30]; if (self.myCreateBtn.selected) { // self.pageView.currentPageIndex = 1; [self.pageView setCurrentPageIndexWithAnimation:1]; } }else{ self.myAttenBtn.selected = !self.myAttenBtn.selected; self.myCreateBtn.selected = !self.myCreateBtn.selected; // [self.menuRubberView pullWithOffSet:- (rect_screen.size.width)/2]; // [self.menuRubberView recoverStateAnimation]; [self.menuRubberView animationStartWithOffsetX:rect_screen.size.width/4 - 30]; if (self.myAttenBtn.selected) { // self.pageView.currentPageIndex = 0; [self.pageView setCurrentPageIndexWithAnimation:0]; } } } - (void)pan:(UIPanGestureRecognizer*)panGesture { if ([delegate conformsToProtocol:@protocol(myTopicCenterDelegate)] && [delegate respondsToSelector:@selector(removeAskView:)]) { [delegate removeAskView:panGesture]; } } - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer { return YES; } //- (void)backHandler { // if ([delegate conformsToProtocol:@protocol(myTopicCenterDelegate)] && // [delegate respondsToSelector:@selector(removeButtonHandler)]) { // [delegate removeButtonHandler]; // } //} - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } - (UIView*)backView { if (!_backView) { _backView = [[UIView alloc]initWithFrame:CGRectMake(0,70,rect_screen.size.width, rect_screen.size.height-CGRectGetHeight(self.naviBar.bounds))]; _backView.backgroundColor = [UIColor colorWithHexString:BackGroundColor]; } return _backView; } -(UIButton *)myAttenBtn{ if (!_myAttenBtn) { _myAttenBtn = [UIButton buttonWithType:UIButtonTypeCustom]; [_myAttenBtn setTitle:@"我关注的" forState:UIControlStateNormal]; _myAttenBtn.titleLabel.font = appFont(TEXT_FOUR_LEVELSIZE, NO); [_myAttenBtn setTitleColor:[UIColor colorWithHexString:TextGray] forState:UIControlStateNormal]; [_myAttenBtn setTitleColor:[UIColor colorWithHexString:BLUECOLOR] forState:UIControlStateSelected]; _myAttenBtn.frame = CGRectMake(0, 0, rect_screen.size.width/2, 40); [_myAttenBtn addTarget:self action:@selector(notificationEvent:) forControlEvents:UIControlEventTouchUpInside]; } return _myAttenBtn; } -(UIButton *)myCreateBtn{ if (!_myCreateBtn) { _myCreateBtn = [UIButton buttonWithType:UIButtonTypeCustom]; [_myCreateBtn setTitle:@"我创建的" forState:UIControlStateNormal]; _myCreateBtn.titleLabel.font = appFont(TEXT_FOUR_LEVELSIZE, NO); [_myCreateBtn setTitleColor:[UIColor colorWithHexString:TextGray] forState:UIControlStateNormal]; [_myCreateBtn setTitleColor:[UIColor colorWithHexString:BLUECOLOR] forState:UIControlStateSelected]; _myCreateBtn.frame = CGRectMake(CGRectGetMaxX(self.myAttenBtn.frame),0 , rect_screen.size.width/2, 40); [_myCreateBtn addTarget:self action:@selector(myCreateSelector:) forControlEvents:UIControlEventTouchUpInside]; } return _myCreateBtn; } - (ATPagingView*)pageView { if (!_pageView) { _pageView = [[ATPagingView alloc]initWithFrame:CGRectMake(0, 40, rect_screen.size.width, CGRectGetHeight(self.backView.bounds) - 40)]; _pageView.gapBetweenPages = 0; _pageView.recyclingEnabled = NO; _pageView.backgroundColor = [UIColor colorWithHexString:BackGroundColor]; _pageView.delegate = self; _pageView.scrollView.bounces = NO; _pageView.scrollView.scrollEnabled = NO; } return _pageView; } - (ZSAnimationView*)menuRubberView { if (!_menuRubberView) { // _menuRubberView = [[RubberBandView alloc] initWithFrame:CGRectMake(CGRectGetWidth(self.myAttenBtn.frame)/2 -30,40-3, 60, 3) layerProperty:MakeRBProperty(0, 0, 60, 3,(rect_screen.size.width)/2)]; //【倒退】我的话题和私信页面,不断切换列表,列表名下方的横线消失(bug:5164) _menuRubberView = [[ZSAnimationView alloc] initWithFrame:CGRectMake(CGRectGetWidth(self.myAttenBtn.frame)/2 -30,40-3, 60, 3)]; _menuRubberView.backgroundColor = [UIColor colorWithHexString:BLUECOLOR]; } return _menuRubberView; } -(UIButton *)selectBtn{ if (!_selectBtn) { _selectBtn = [UIButton buttonWithType:UIButtonTypeCustom]; _selectBtn.backgroundColor = [UIColor clearColor]; } return _selectBtn; } -(UIButton *)editBtn{ if (!_editBtn) { _editBtn = [UIButton buttonWithType:UIButtonTypeCustom]; _editBtn.backgroundColor = [UIColor clearColor]; _editBtn.titleLabel.font = appFont(TEXT_SEVEN_LEVELSIZE, NO); [_editBtn setTitle:@"编辑" forState:UIControlStateNormal]; [_editBtn setTitle:@"完成" forState:UIControlStateSelected]; [_editBtn setTitleColor:[UIColor colorWithHexString:BLUECOLOR] forState:UIControlStateNormal]; [_editBtn addTarget:self action:@selector(editSelector:) forControlEvents:UIControlEventTouchUpInside]; //热区扩大,几个地方的点击热区要扩大(bug:5086) UILabel *border = [[UILabel alloc]initWithFrame:CGRectMake(15, 12.7, 30, 15)]; border.layer.cornerRadius = 2; border.layer.borderColor = [UIColor colorWithHexString:BLUECOLOR].CGColor; border.layer.borderWidth = 1; [_editBtn addSubview:border]; } return _editBtn; } -(UIButton *)createBtn{ if (!_createBtn) { _createBtn = [UIButton buttonWithType:UIButtonTypeCustom]; _createBtn.backgroundColor = [UIColor clearColor]; _createBtn.titleLabel.font = appFont(TEXT_SEVEN_LEVELSIZE, NO); [_createBtn setTitle:@"创建" forState:UIControlStateNormal]; [_createBtn setTitleColor:[UIColor colorWithHexString:BLUECOLOR] forState:UIControlStateNormal]; [_createBtn addTarget:self action:@selector(createSelector:) forControlEvents:UIControlEventTouchUpInside]; _createBtn.hidden = YES; UILabel *border = [[UILabel alloc]initWithFrame:CGRectMake(15, 12.7, 30, 15)]; border.layer.cornerRadius = 2; border.layer.borderColor = [UIColor colorWithHexString:BLUECOLOR].CGColor; border.layer.borderWidth = 1; [_createBtn addSubview:border]; } return _createBtn; } #pragma mark - add subviews - (void)addTabButtns { [self.backView addSubview:self.myAttenBtn]; [self.backView addSubview:self.myCreateBtn]; if ([[TPUserDefault instance].msgMark[@"letterMark"] intValue] >0) { self.markLabel.hidden = NO; self.markLabel.frame = CGRectMake(CGRectGetMaxX(self.myCreateBtn.frame)-90, CGRectGetHeight(self.myCreateBtn.frame)/2 - 10, 20, 20); if ([[TPUserDefault instance].msgMark[@"letterMark"] intValue] >9) { self.markLabel.text = @"9+"; }else{ self.markLabel.text = [NSString stringWithFormat:@"%@",[TPUserDefault instance].msgMark[@"letterMark"]]; } [self.backView addSubview:self.markLabel]; }else{ self.markLabel.hidden = NO; } UIView *belowLine = [[UIView alloc]initWithFrame:CGRectMake(0, 40-1, rect_screen.size.width, 1)]; belowLine.backgroundColor = [UIColor colorWithHexString:LINECOLOR]; [self.backView addSubview:belowLine]; UIView *shortLine1 = [[UIView alloc]initWithFrame:CGRectMake(CGRectGetMaxX(self.myAttenBtn.frame), 10, 1, 20)]; shortLine1.backgroundColor = [UIColor colorWithHexString:LINECOLOR]; [self.backView addSubview:shortLine1]; [self.backView addSubview:self.menuRubberView]; } - (void)addPageView { self.viewControllers = [NSMutableArray arrayWithObjects:@"myAttentionController",@"myCreateController",nil]; [self.viewControllers enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { if (nil == self.pageViewControllers) { self.pageViewControllers = [NSMutableArray array]; } if ([obj isKindOfClass:[UIViewController class]]) { [self.pageViewControllers addObject:obj]; [self addChildViewController:obj]; } else { [self.pageViewControllers addObject:[NSNull null]]; } }]; [self.backView addSubview:self.pageView]; self.myAttenBtn.selected = YES; [self.pageView reloadData]; } #pragma mark - button handler - (void)notificationEvent:(UIButton*)btn { if (btn.selected == YES) { myAttentionController *vc = self.pageViewControllers[0]; [vc scrollTableViewToTop]; return; } btn.selected = !btn.selected; if (btn.selected) { self.myAttenBtn.selected = NO; self.myCreateBtn.selected = NO; // [self.menuRubberView pullWithOffSet:-(rect_screen.size.width)/2]; // [self.menuRubberView recoverStateAnimation]; // self.pageView.currentPageIndex = 0; [self.pageView setCurrentPageIndexWithAnimation:0]; [self.menuRubberView animationStartWithOffsetX:rect_screen.size.width/4 -30]; } } - (void)myCreateSelector:(UIButton*)btn { if (btn.selected == YES) { myCreateController *vc = self.pageViewControllers[1]; [vc scrollTableViewToTop]; return; } btn.selected = !btn.selected; if (btn.selected) { self.myAttenBtn.selected = NO; self.myCreateBtn.selected = NO; // [self.menuRubberView pullWithOffSet:(rect_screen.size.width)/2]; // [self.menuRubberView recoverStateAnimation]; // self.pageView.currentPageIndex = 1; [self.pageView setCurrentPageIndexWithAnimation:1]; [self.menuRubberView animationStartWithOffsetX:3*rect_screen.size.width/4 - 30]; } } -(void) editSelector:(UIButton*) btn{ btn.selected = !btn.selected; // if (btn.selected) { myAttentionController *vc = self.pageViewControllers[0]; vc.isEdit = btn.selected; // } } -(void) createSelector:(UIButton *)btn{ creatTopicController *creat = [[creatTopicController alloc] init]; [self.navigationController pushViewController:creat animated:YES]; } #pragma mark - pageView delegate - (NSInteger)numberOfPagesInPagingView:(ATPagingView *)pagingView { return self.viewControllers.count; } - (UIView *)viewForPageInPagingView:(ATPagingView *)pagingView atIndex:(NSInteger)index { if (self.pageViewControllers[index] == [NSNull null]) { NSString *className = self.viewControllers[index]; Class class = NSClassFromString(className); UIViewController *vc = [[class alloc] init]; self.pageViewControllers[index] = vc; [self addChildViewController:vc]; } return ((UIViewController*)self.pageViewControllers[index]).view; } - (void)currentPageDidChangeInPagingView:(ATPagingView *)pageView { } - (void)pagesDidChangeInPagingView:(ATPagingView *)pageView { if (pageView.currentPageIndex == 0) { self.myAttenBtn.selected = YES; self.myCreateBtn.selected = NO; self.editBtn.hidden = NO; self.createBtn.hidden = YES; }else if (pageView.currentPageIndex == 1) { myCreateController *vc = self.pageViewControllers[1]; [vc scrollTableViewToTop]; self.myAttenBtn.selected = NO; self.myCreateBtn.selected = YES; self.createBtn.hidden = NO; self.editBtn.hidden = YES; dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ vc.isRequest = YES; }); } } - (void)pagingViewWillBeginMoving:(ATPagingView *)pageView { } - (void)disablePanGesture { panGestureRecognizer.enabled = NO; } -(void)setCurrentIndex:(NSInteger)index{ _currentIndex = index; if(_currentIndex == 1){ [self.menuRubberView animationStartWithOffsetX:3*rect_screen.size.width/4 - 30]; }else{ [self.menuRubberView animationStartWithOffsetX:rect_screen.size.width/4 - 30]; } // self.pageView.currentPageIndex = index; [self.pageView setCurrentPageIndexWithAnimation:index]; } - (void)tapNaviBar:(id)sender {//社区:进入我的话题,下拉查看我关注的话题列表,点击顶部我的话题(bug:5110) id obj = self.pageViewControllers[self.pageView.currentPageIndex]; if([obj isKindOfClass:[myAttentionController class]]){ [((myAttentionController *)obj) scrollTableViewToTop]; }else{ [((myCreateController *)obj) scrollTableViewToTop]; } } @end