iOS学习iOS 开发每天分享优质文章iOS开发攻城狮的集散地

自定义UITabBar,重新设置tabBarButton的fra

2016-10-28  本文已影响214人  冷洪林
很多时候系统自带的tabBar不能满足我们的需求,这时我们就需要自定义tabBar,自定义tabBar步骤:
这里需要注意:

由于系统的tabBar是readOnly的,所以我们需要利用KVC对系统的tabBar进行赋值: KVC的原理是通过访问属性进行赋值,不是通过setter方法进行赋值

从打印结果可看出,tabBar添加子控件按钮是在viewDidLoad之后,所以我们可以在viewDidLoad中自定义tabBar
// 懒加载
- (UIButton *)plusButton{
    if (_plusButton == nil) {
        UIButton *plusButton = [UIButton buttonWithType:UIButtonTypeCustom];
        [plusButton setBackgroundImage:[UIImage imageNamed:@"tabBar_publish_icon"] forState:UIControlStateNormal];
        [plusButton setBackgroundImage:[UIImage imageNamed:@"tabBar_publish_click_icon"] forState:UIControlStateHighlighted];
        [plusButton sizeToFit];
        [self addSubview:plusButton];
        _plusButton = plusButton;
    }
    return _plusButton;
}

- (void)layoutSubviews
{
    [super layoutSubviews];
    
    // 布局子控件
    NSInteger count = self.items.count + 1;
    CGFloat btnW = self.frame.size.width / count;
    CGFloat btnH = self.frame.size.height;
    
    NSInteger i = 0;
    for (UIButton *tabBarButton in self.subviews) {
        // 取出UITabBarButton
        if ([tabBarButton isKindOfClass:NSClassFromString(@"UITabBarButton")]) {
            if (i == 2) {
                i += 1;
            }
            tabBarButton.frame = CGRectMake(btnW * i, 0, btnW, btnH);
            i++;
        }
        
    }
    
    // plusButton
    self.plusButton.center = CGPointMake(self.frame.size.width * 0.5, self.frame.size.height * 0.5);
}

最后把demo连接放上来,有需要的小伙伴可以下载哦,嘿嘿https://github.com/lenglengiOS/BuDeJie_1

上一篇 下一篇

猜你喜欢

热点阅读