初学者对于UIScrollView类似于新闻头条的标题栏滚动效果

#import "TaskColumnView.h"
 
@interface TaskColumnView : UIScrollView
 
- (instancetype)initWithFrame:(CGRect)frame;
 
@end
 
@implementation TaskColumnView
 
- (instancetype)initWithFrame:(CGRect)frame{
    self = [super initWithFrame:frame];
    if (self) {
        [self setButtons];
    }
    return self;
}
 
- (void)setButtons{
    CGFloat width = 100.0;
    CGFloat height = 50.0;
    UIButton *button;
    NSString *path = [[NSBundle mainBundle] pathForResource:@"TaskDistribution" ofType:@"plist"];
    NSArray *array = [NSArray arrayWithContentsOfFile:path];
    for (int i=0; i < [array count]; i++) {
        button = [[UIButton alloc] initWithFrame:CGRectMake(width*i, 0, width, height)];
        [button setTitle:[array[i] objectForKey:@"name"] forState:UIControlStateNormal];
        [button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
        [button addTarget:self action:@selector(buttonClick:) forControlEvents:UIControlEventTouchUpInside];
        [button setTag:[[array[i] objectForKey:@"catid"] intValue]];
        [self addSubview:button];
    }
}
 
- (void)buttonClick:(UIButton *)button{
     
}
@end
 
 
 
 
#import "MyLiabilityViewController.h"
#import "TaskColumnView.h"
 
@interface MyLiabilityViewController : UIViewController <UIScrollViewDelegate,UIToolbarDelegate>
{
    CGFloat _buttonWidth;
}
 
@property(nonatomic,retain)UIScrollView *navView;
@property(nonatomic, retain)TaskColumnView *columnView;
@property(nonatomic,strong)NSArray *columns;
@property(nonatomic,retain)UIScrollView *scrollView;
@property(nonatomic,strong)NSMutableArray *columnButtons;
@property(nonatomic,retain)UIToolbar *toolbar;
 
 
#import "MyLiabilityViewController.m"
    //菜单栏
    _toolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, SWIDTH, 50)];
    [_toolbar setHidden:NO];
    [_toolbar setDelegate:self];
    [_toolbar setBackgroundImage:[UIImage imageNamed:@"bg.png"] forToolbarPosition:UIBarPositionTop barMetrics:UIBarMetricsDefault];
    [_toolbar setClipsToBounds:NO];
    [self.view addSubview:_toolbar];
     
    //导航栏
    _navView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, SWIDTH, 50)];
    _navView.delegate = self;
    _navView.showsHorizontalScrollIndicator = YES;
    [_toolbar addSubview:_navView];
     
    topShadowImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 49, SWIDTH/5, 1)];
    [topShadowImageView setImage:[UIImage imageNamed:@"icon-selected-slide-image.png"]];
    [_navView addSubview:topShadowImageView];
     
     
     _scrollView = [[UIScrollView alloc] initWithFrame:self.view.bounds];
    _scrollView.originY = 51;
    _scrollView.height-= 50;
    _scrollView.pagingEnabled = YES;
    _scrollView.showsVerticalScrollIndicator = NO;
    _scrollView.showsHorizontalScrollIndicator = NO;
    _scrollView.delegate = self;
    _scrollView.autoresizingMask = UIViewAutoresizingFlexibleHeight;
    _scrollView.backgroundColor = [UIColor bgColor];
//    [self.view addSubview:_scrollView];
     
     
    NSString *path = [[NSBundle mainBundle] pathForResource:@"TaskDistribution" ofType:@"plist"];
    self.columns = [NSArray arrayWithContentsOfFile:path];
    self.columnButtons = [NSMutableArray array];
    _buttonWidth = SWIDTH/5;
    _navView.contentSize = CGSizeMake(_buttonWidth*[self.columns count], 0);
    for (int i = 0; i < [self.columns count]; i++) {
        NSDictionary *column = self.columns[i];
        //添加导航按钮
        UIButton *columnButton = [[UIButton alloc] initWithFrame:CGRectMake(_buttonWidth*i, 10, _buttonWidth, 30)];
        [columnButton.layer setCornerRadius:3.0];
        [columnButton.layer setMasksToBounds:YES];
        [columnButton.titleLabel setFont:[UIFont fontWithName:DSXFontStyleMedinum size:16.0]];
        [columnButton setTag:[[column objectForKey:@"catid"] integerValue]];
        [columnButton setTitle:[column objectForKey:@"name"] forState:UIControlStateNormal];
        [columnButton setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
        [columnButton setTitleColor:[UIColor redColor] forState:UIControlStateSelected];
        [columnButton addTarget:self action:@selector(columnButtonClick:) forControlEvents:UIControlEventTouchUpInside];
        [_navView addSubview:columnButton];
        [self.columnButtons addObject:columnButton];
    }
    [self.columnButtons[0] setSelected:YES];//默认选中
    _scrollView.contentSize = CGSizeMake(SWIDTH*[self.columns count], 0);
     
    _tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 50, SWIDTH, SHEIGHT-115)];
    _tableView.delegate = self;
    _tableView.dataSource = self;
    [self.view addSubview:_tableView];
     
    [_tableView registerClass:[ResponsibilityTaskTableViewCell class] forCellReuseIdentifier:@"aCell"];
     
    array = [[NSMutableArray alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"ResponsibilityTask" ofType:@"plist"]];
     
     
    //栏目按钮点击事件
- (void)columnButtonClick:(UIButton *)button{
    NSInteger index = 0;
    for (int i=0; i<[self.columnButtons count]; i++) {
        if (self.columnButtons[i] == button) {
            index = i;
//            [UIView animateWithDuration:0.25 animations:^{
//                [topShadowImageView setFrame:CGRectMake(button.frame.origin.x, 49, (SWIDTH-100)/5, 1)];
//            } completion:^(BOOL finished) {
//                if (finished) {
//                    _scrollView需要展示的内容
//                     
//                }
//            }];
            [UIView animateWithDuration:0.1 animations:^{
                [topShadowImageView setFrame:CGRectMake(button.frame.origin.x, 49, SWIDTH/5, 1)];
            }];
             
             
        }
        [self.columnButtons[i] setSelected:NO];
    }
    [button setSelected:YES];
    [_scrollView setContentOffset:CGPointMake(SWIDTH*index, _scrollView.contentOffset.y) animated:YES];
}
     
原文版权归作者所有,转载请注明出处
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值