您的位置:首页 > 其它

如何在TabBar上自定义添加个性按钮

2016-04-07 13:18 579 查看
如何在tabBar的中间添加一个发布按钮, 为此自定义了一个tabBar, 来修改器子控件的布局

#import "QMTabBar.h"

@interface QMTabBar ()
@property (nonatomic, weak) UIButton *publishButton;    //发布按钮
@end

@implementation QMTabBar

- (instancetype)initWithFrame:(CGRect)frame
{
if (self = [super initWithFrame:frame]) {

//设置tabbar的背景图片
[self setBackgroundImage:[UIImage imageNamed:@"tabbar-light"]];

//添加发布按钮
UIButton *publishButton = [UIButton buttonWithType:UIButtonTypeCustom];
[publishButton setBackgroundImage:[UIImage imageNamed:@"tabBar_publish_icon"] forState:UIControlStateNormal];
[publishButton setBackgroundImage:[UIImage imageNamed:@"tabBar_publish_click_icon"] forState:UIControlStateHighlighted];
//按钮的大小等于当前图片的大小, 注意顺序
publishButton.size = publishButton.currentBackgroundImage.size;
[self addSubview:publishButton];

self.publishButton = publishButton;

}
return self;
}

//布局子控件, 把发布按钮布局在4个Item中间
- (void)layoutSubviews
{
[super layoutSubviews];

//设置发布按钮
self.publishButton.center = CGPointMake(self.width * 0.5, self.height * 0.5);

CGFloat buttonY = 0;
CGFloat buttonW = self.width / 5.0;
CGFloat buttonH = self.height;
NSInteger index = 0;

//设置其他UITabBarButton的frame
for (UIView *view in self.subviews) {
if (![view isKindOfClass:NSClassFromString(@"UITabBarButton")]) continue; //UITabBarButton是苹果官方的私有方法, 可以通过NSClassFromString()拿到类

//计算按钮的X
CGFloat buttonX = buttonW * ((index > 1)? (index + 1): index);
view.frame = CGRectMake(buttonX, buttonY, buttonW, buttonH);

index += 1;
}
}

@end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  tabBar 自定义