更改标签栏的高度和宽度并添加圆角

时间:2016-10-07 21:00:29

标签: ios swift xcode uitabbarcontroller uitabbar

我想知道是否可以更改宽度和高度并为标签栏添加圆角?

或多或少是这样的:

我想让标签栏变小并添加圆角。

我现在可以用这样的东西改变大小:

override func viewWillLayoutSubviews() {
    var tabFrame = self.tabBar.frame
    // - 40 is editable , the default value is 49 px, below lowers the tabbar and above increases the tab bar size
    tabFrame.size.height = 40
    tabFrame.origin.y = self.view.frame.size.height - 40
    self.tabBar.frame = tabFrame
}

但是,在图像中实现设计的最佳方法是什么?

提前致谢

1 个答案:

答案 0 :(得分:3)

更改标签栏可能会导致您在应用审核时遇到问题。 为了便于自定义,请尝试使用自定义标签栏控件。

查看Here 以获取易于完全自定义的标签栏组件的开源列表。

告诉我这是否解决了您的问题,否则我们可以进一步定制。

修改

嗯,这是你需要做的:

1-为背景创建一个圆形透明png: enter image description here

2-创建一个自定义uitabbarController类并将该代码放在ViewDidLoad中:

[[UITabBar appearance] setBarTintColor:[UIColor clearColor]];
self.tabBarController.tabBar.translucent = YES;
UIImage *image = [self imageWithImage:[UIImage imageNamed:@"circle.png"]scaledToSize:CGSizeMake(self.tabBar.frame.size.height+1, self.tabBar.frame.size.height+1)];
UIEdgeInsets edgeInsets;
edgeInsets.left = image.size.width/2;
edgeInsets.top = 0.0f;
edgeInsets.right = image.size.width/2; //this will be the constant portion in your image
edgeInsets.bottom = 0.0f;
image = [image resizableImageWithCapInsets:edgeInsets];

[[UITabBar appearance] setBackgroundImage:image];

使用此方法调整图像大小以适合UITabBar高度:

- (UIImage *)imageWithImage:(UIImage *)image scaledToSize:(CGSize)newSize {
    //UIGraphicsBeginImageContext(newSize);
    // In next line, pass 0.0 to use the current device's pixel scaling factor (and thus account for Retina resolution).
    // Pass 1.0 to force exact pixel size.
    UIGraphicsBeginImageContextWithOptions(newSize, NO, 0.0);
    [image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return newImage;
}

结果如下:

enter image description here

如果仍然不清楚,我为您制作了一个xcode项目并将其上传到github,请随时使用它以满足您的需求:)

Custom UITabBarController by Sdiri Houssem on Github

祝你好运