|
//
// 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
|