主要类
FootBar.h
#import <UIKit/UIKit.h>
#import "FootBarItem.h"
@interface FootBar : UIScrollView
-(void) setDataScoure:(NSArray *)footBarItems withTitleNortalColor:(UIColor *)nortalColor withTitleSelectColor:(UIColor *)selectColor;
-(void) selectPosition:(int) position;
@end
FootBar.m
//
// FootBar.m
// TyApp
//
// Created by TY-DENG on 17/5/16.
// Copyright © 2017年 Lin. All rights reserved.
//
#import "FootBar.h"
#import "FootBarItem.h"
@implementation FootBar
{
NSArray *dataScoure;
UIColor *titleSelectColor;
UIColor *titleNortalColor;
int oldSelectPosition;
}
-(void) setDataScoure:(NSArray *)footBarItems withTitleNortalColor:(UIColor *)nortalColor withTitleSelectColor:(UIColor *)selectColor{
dataScoure = footBarItems;
titleSelectColor = selectColor;
titleNortalColor = nortalColor;
oldSelectPosition = -1;
[self setView];
}
-(void) setView{
int wid = self.frame.size.width/dataScoure.count;
for (int i =0; i<dataScoure.count; i++) {
FootBarItem *item = dataScoure[i];
UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(wid*i, 0, wid, self.frame.size.height)];
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake((wid-18)/2, 4, 20, 20)];
[button setTag:1000+i];
[imageView setImage:[UIImage imageNamed:item.imageNortalName]];
[imageView setTag:2000+i];
[button addSubview:imageView];
UILabel *title = [[UILabel alloc] initWithFrame:CGRectMake(0, 24, wid, 20)];
[title setText:item.title];
[title setFont:[UIFont systemFontOfSize:13]];
[title setTextColor:titleNortalColor];
[title setTextAlignment:NSTextAlignmentCenter];
[title setTag:3000+i];
[button addTarget:self action:@selector(butonAction:) forControlEvents:UIControlEventTouchUpInside];
[button addSubview:title];
[self addSubview:button];
}
}
-(void) selectPosition:(int) position{
if (oldSelectPosition >= 0) {
//设置原来被选择的状态
FootBarItem *item0 = dataScoure[oldSelectPosition];
UIButton *button0 = [self viewWithTag:1000+oldSelectPosition];
UIImageView *iamgeView0 = [button0 viewWithTag:2000+oldSelectPosition];
if (iamgeView0) {
[iamgeView0 setImage:[UIImage imageNamed:item0.imageNortalName]];
}
UILabel *title0 = [button0 viewWithTag:3000+oldSelectPosition];
if (title0) {
[title0 setTextColor:titleNortalColor];
}
}
//设置新选择的状态
FootBarItem *item = dataScoure[position];
UIButton *button = [self viewWithTag:1000+position];
UIImageView *iamgeView = [button viewWithTag:2000+position];
if (iamgeView) {
[iamgeView setImage:[UIImage imageNamed:item.imageSelectName]];
}
UILabel *title = [button viewWithTag:3000+position];
if (title) {
[title setTextColor:titleSelectColor];
}
oldSelectPosition = position;
//在这里可以创建代理,实现回调,当然使用Block也是可以的。
}
-(void) butonAction:(UIButton *) sender{
[self selectPosition:((int)sender.tag - 1000)];
}
@end
适配工具类
FootBarItem.h
#import <Foundation/Foundation.h>
@interface FootBarItem : NSObject
@property (strong,nonatomic) NSString *title;
@property (strong,nonatomic) NSString *imageSelectName;
@property (strong,nonatomic) NSString *imageNortalName;
-(id) initWithTitile:(NSString *) title withNortalImageName:(NSString *) nortalImageName withSelectImageName:(NSString *)selectImageName;
@end
FootBarItem.m
//
// FootBarItem.m
// TyApp
//
// Created by TY-DENG on 17/5/16.
// Copyright © 2017年 Lin. All rights reserved.
//
#import "FootBarItem.h"
@implementation FootBarItem
-(id) initWithTitile:(NSString *) title withNortalImageName:(NSString *) nortalImageName withSelectImageName:(NSString *)selectImageName{
self = [super init];
self.title = title;
self.imageNortalName = nortalImageName;
self.imageSelectName = selectImageName;
return self;
}
@end
本文介绍了一个名为FootBar的底部导航栏组件的实现细节,包括如何设置数据源、自定义样式及响应点击事件等关键功能。此组件适用于iOS应用开发中常见的底部导航场景。
1468

被折叠的 条评论
为什么被折叠?



