TabBar中间拱起的两种思路:

2017-10-18  本文已影响0人  BoxDeng

一, UITabBarController 的 tabBar 上,添加 subView . 中间的按钮图片放大点。

methodOne.png

点击这里,没反应的。

TabBar 的 代码
- (void)itemSelected:(LLTabBarItem *)sender {
    if (sender.tabBarItemType != LLTabBarItemRise) {
        [self setSelectedIndex:sender.tag];
    } else {
        // 中间的
        if (self.delegateLLTabBar) {
            if ([self.delegateLLTabBar respondsToSelector:@selector(tabBarDidSelectedRiseButton)]) {
                [self.delegateLLTabBar tabBarDidSelectedRiseButton];
            }
        }
    }
}
- (void)setTabBarItemAttributes:(NSArray<NSDictionary *> *)tabBarItemAttributes {

......

    for (id item in _tabBarItemAttributes) {
        if ([item isKindOfClass:[NSDictionary class]]) {

......
            
            if (tabBarItem.tabBarItemType != LLTabBarItemRise) {
                tabBarItem.tag = itemTag;
                itemTag++;
            } else {
                passedRiseItem = YES;
            }

......

        }
    }
}
TabBar 上面的 Button 的 代码
- (void)layoutSubviews {
    [super layoutSubviews];
    
    [self.titleLabel sizeToFit];
    CGSize titleSize = self.titleLabel.frame.size;

    CGSize imageSize = [self imageForState: UIControlStateNormal].size;
    if (imageSize.width != 0 && imageSize.height != 0) {
        CGFloat imageViewCenterY = CGRectGetHeight(self.frame) - 3 - titleSize.height - imageSize.height / 2 - 5;
        self.imageView.center = CGPointMake(CGRectGetWidth(self.frame) / 2, imageViewCenterY);
    } else {
        CGPoint imageViewCenter = self.imageView.center;
        imageViewCenter.x = CGRectGetWidth(self.frame) / 2;
        imageViewCenter.y = (CGRectGetHeight(self.frame) - titleSize.height) / 2;
        self.imageView.center = imageViewCenter;
    }
这个方法比较少用。

imageForState:
Returns the image used for a button state.

二, TabBarViewController 中, 设置 tabBar 的 图片 偏移

methodTwo.png
作用域增加,点击上方, 起到 点击下方 效果。
 override func viewWillLayoutSubviews() {
        //重新设置tabbar 的高度
        var frame = self.tabBar.frame
        frame.size.height = myHeight
        frame.origin.y = self.view.frame.size.height - myHeight
        self.tabBar.frame = frame
        self.tabBar.barStyle = .default
        //设置图片偏移,因为加高了tabbar
        for i in 0..<self.tabBar.items!.count {
            let item = self.tabBar.items![i]
            if i != 2 {
                item.imageInsets = UIEdgeInsets(top: myHeight - 49 - 5, left: 0, bottom: -(myHeight - 49 - 5), right: 0)
            }
            else{
                item.imageInsets = UIEdgeInsets(top: 5, left: 0, bottom: -5, right: 0)
            }
        }
    }
上一篇下一篇

猜你喜欢

热点阅读