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

Posted

技术标签:

【中文标题】更改标签栏的高度和宽度并添加圆角【英文标题】:Change tab bar height and width and add rounded corners 【发布时间】:2016-10-07 21:00:29 【问题描述】:

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

差不多是这样的:

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

我现在可以通过以下方式更改大小:

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

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

提前致谢

【问题讨论】:

github.com/satishVekariya/SUITabView 【参考方案1】:

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

查看Here 以获得可轻松完全自定义的标签栏组件的优秀开源列表。

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

编辑:

嗯,这是你需要做的:

1-为背景创建一个圆形透明png:

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;

结果如下:

如果还不清楚,我给你做了一个xcode项目并上传到github,请随意使用它来满足你的需要:)

Custom UITabBarController by Sdiri Houssem on Github

最好的问候

【讨论】:

我已经尝试找到看起来相似但没有运气的东西。到目前为止,我正在考虑使用子类并对其进行更改 VC:UITabBarController, UITabBarControllerDelegate 这里我用示例代码更新了响应。我还为您制作了一个可立即使用的示例项目并在 Github 上共享,完全符合您的需要。 非常感谢您的演示!顺便说一句,经过一番搜索,我还发现了这个:github.com/Yalantis/FoldingTabBar.ios 根据 cmets 的说法,有些人在他们的应用程序中使用了它,所以我猜 Apple 会接受它。正在考虑改变它,所以我只在“打开”状态下使用它 这也是一个很棒的组件 :) 我很高兴你找到了你需要的东西并且我可以提供帮助。

以上是关于更改标签栏的高度和宽度并添加圆角的主要内容,如果未能解决你的问题,请参考以下文章

iOS7上带有标签栏的奇怪顶部空间

如何使用swift3增加导航栏的高度并更改xcode 8中状态栏的颜色?

swiftUI中标签栏的圆角?

以编程方式更改标签栏和导航栏的颜色

更改标签栏的背景颜色

div自动适应页面高度,多出部分出现滚动条