美文网首页
TabBar中间拱起的两种思路:

TabBar中间拱起的两种思路:

作者: BoxDeng | 来源:发表于2017-10-18 00:01 被阅读0次

    一, 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)
                }
            }
        }
    

    相关文章

      网友评论

          本文标题:TabBar中间拱起的两种思路:

          本文链接:https://www.haomeiwen.com/subject/vvajuxtx.html