修改UITabBar中单个选项卡的高度

时间:2012-09-28 04:58:12

标签: iphone ios uitabbarcontroller uitabbar

有没有办法让我可以增加单个标签(UITabbarItem)的高度,使其余的标签在UITabBar中保持相同的高度。

4 个答案:

答案 0 :(得分:5)

我只是猜测你正试图拥有一个Instagram(以前的版本)或类似于界面的界面,其中一个tabBarItems比其余部分大得多。

您有两种选择。

  1. 创建一个customTabBar,其中一个项目要大得多。 (我不会建议

  2. 保持现有的tabBarItems不变。不需要定制的。 您只需要创建一个具有所需高度和形状的UIButton,并将其添加到tabBarItem之上。

  3. 然后我们的工作归结为创建UITabBarController的子类并在UITabBar之上添加自定义UIButton。

    UIButton* button = [UIButton buttonWithType:UIButtonTypeCustom];
    button.frame = CGRectMake(0.0, 0.0, buttonImage.size.width, buttonImage.size.height);
    [button setBackgroundImage:buttonImage forState:UIControlStateNormal];
    [button setBackgroundImage:highlightImage forState:UIControlStateHighlighted];
    
    CGFloat heightDifference = buttonImage.size.height - self.tabBar.frame.size.height;
    if (heightDifference < 0)
        button.center = self.tabBar.center;
    else
    {
        CGPoint center = self.tabBar.center;
        center.y = center.y - heightDifference/2.0;
        button.center = center;
    }
    
    [self.view addSubview:button];
    

答案 1 :(得分:1)

根据我的经验,您必须扩展UITabBar类,并在初始化UITabBarItem时,相应地设置它们的高度。另外,为UITabBar创建背景图像。

答案 2 :(得分:1)

你可以使用customTabBar,在这里你可以得到它的样本,它很好的类,你可以根据你的大小设置tabBar项目。

Link

答案 3 :(得分:1)

在Swift 2.0中,您可以拥有UITabBarController的子类,并使用以下代码添加UIButton:

let button: UIButton = UIButton(type: UIButtonType.Custom)
button.backgroundColor = UIColor.clearColor()
let buttonImage: UIImage = UIImage(named: "logo")!
let buttonImageHighlighted: UIImage = UIImage(named: "logoHighlighted")!
button.frame = CGRectMake(0.0, 0.0, buttonImage.size.width, buttonImage.size.height);
button.setBackgroundImage(buttonImage, forState: UIControlState.Normal)
button.setBackgroundImage(buttonImageHighlighted, forState: UIControlState.Highlighted)

let heightDifference:CGFloat = buttonImage.size.height - self.tabBar.frame.size.height;
if (heightDifference < 0) {
    button.center = self.tabBar.center;
} else {
    var center: CGPoint = self.tabBar.center;
    center.y = center.y - heightDifference/2.0;
    button.center = center;
}

self.view.addSubview(button)