IOS------网易新闻滚动标题

本文介绍了如何在iOS应用中创建一个类似网易新闻的滚动标题功能,包括滚动视图的搭建,按钮的添加,以及利用懒加载来实现按钮事件和数据提供。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.创建滚动视图

self.titleScrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 64, self.view.frame.size.width, 60)];
    _titleScrollView.backgroundColor = [UIColor grayColor];
    //设置滚动条
    _titleScrollView.showsVerticalScrollIndicator = NO;
    _titleScrollView.showsHorizontalScrollIndicator = NO;
    
    _titleScrollView.bounces = NO;
    _titleScrollView.contentSize = CGSizeMake(100*self.titlesArray.count,60);
    [self.view addSubview:_titleScrollView];

2.添加按钮

for (int i = 0; i <_titlesArray.count; i ++) {
        NSString *title = [self.titlesArray objectAtIndex:i];
        //创建按钮
        UIButton *titleButton = [[UIButton alloc] initWithFrame:CGRectMake(i*100, 0, 100, 60)];
        [titleButton setTitle:title forState:UIControlStateNormal];
        [titleButton setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
        //添加按钮事件
        [titleButton addTarget:self action:@selector(buttonDidClicked:) forControlEvents:UIControlEventTouchUpInside];
        [self.titleScrollView addSubview:titleButton];
    }

 3.用懒加载创建按钮事件

-(void)buttonDidClicked:(UIButton *)sender{
    //判断之前是否选中
    if (_lastSelectedButton != nil) {
        //将之前选中的按钮状态还原
        [_lastSelectedButton setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
        _lastSelectedButton.transform = CGAffineTransformMakeScale(1, 1);
        
    }
    //否则 按钮变大变红
    [sender setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
    sender.transform = CGAffineTransformMakeScale(1.3, 1.3);
    //记录当前选中的按钮
    _lastSelectedButton = sender;
    //处理按钮的滚动
    //左边
    CGFloat offset = sender.center.x - self.titleScrollView.frame.size.width*0.5;
    if (offset < 0) {
        offset = 0;
    }
    //右边
    CGFloat maxOffset = self.titleScrollView.contentSize.width - self.titleScrollView.frame.size.width;
    if (offset > maxOffset) {
        offset = maxOffset;
    }
    [self.titleScrollView setContentOffset:CGPointMake(offset, 0) animated:YES];
}

 4.用懒加载提供按钮数据

#pragma mark ------懒加载------
-(NSArray *)titlesArray{
    if (_titlesArray == nil) {
        self.titlesArray = @[@"头条",@"体育",@"房产",@"NBA",@"重庆",@"娱乐",@"汽车",@"科技"];
    }
    return _titlesArray;
}

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值