微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为UITabBarItem创建自定义徽章

如何解决为UITabBarItem创建自定义徽章

我有一个蓝星(UIImage),我想在用户收到应用内消息时将其添加到UITabBarItem。

现在,我正在使用标准点:

self.tabs.tabBar.items[0].badgeValue = "1";
self.tabs.tabBar.items[0].badgeColor = UIColor.blueColor;

据我所知,只能自定义徽章的编号和徽章的颜色。但是,我想使用UIImage作为徽章。

我听说可以通过子类化UITabBarItem类并自己绘制来做到这一点:How to use a custom UIImage as an UITabBarItem Badge?

但是,我是Objective-c的新手。有没有人举过我如何用子类完成此事的例子?

解决方法

是的,您可以根据需要将UITabBarItem子类化为完整样式,但也可以使用UITabBarItem的setBadgeTextAttributes:forState:方法。

这看起来像..

UITabBarItem *item = [[UITabBarItem alloc] initWithTitle:@"Atabbar" image:nil tag:0];
item.badgeValue = @"1";
item.badgeColor = UIColor.redColor;

NSMutableParagraphStyle *style = [[NSMutableParagraphStyle alloc] init];
style.lineSpacing = 0.00001;
style.lineBreakMode = NSLineBreakByWordWrapping;
style.alignment = NSTextAlignmentLeft;
style.paragraphSpacing = 0.00001;
style.minimumLineHeight = 22.5f;
style.maximumLineHeight = 22.5f;
style.lineHeightMultiple = 1.0;
style.headIndent = 0.0;
style.tailIndent = 0.0;
    
NSDictionary<NSAttributedStringKey,id> *attr = @{
     NSParagraphStyleAttributeName:style,NSFontAttributeName:[UIFont fontWithName:@"HelveticaNeue-Thin" size:28.0],NSForegroundColorAttributeName:UIColor.grayColor
};
    
[item setBadgeTextAttributes:attr forState:UIControlStateNormal];
[item setBadgeTextAttributes:attr forState:UIControlStateHighlighted];
[item setBadgeTextAttributes:attr forState:UIControlStateDisabled];
[item setBadgeTextAttributes:attr forState:UIControlStateSelected];
item.titlePositionAdjustment = UIOffsetMake(0.0,0.0);

self.tabs.tabBar.items[0] = item;

请注意,并非所有NSAttributedString值都有意义,因为我不知道您希望实现什么设计。

无尽的可能性在in this apple doc中得到了解释

注意,您可以制作自己的OTF字体,复制到项目的Resources中,然后编辑info.plist以使该字体在您的应用中可用,然后在设置NSFontAttributeName时使用它。但是,如何制作和处理自己的字体是一个完全不同的问题。将UIImage从应用程序的资产中继续进行操作可能会更加方便。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。