如何解决为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 举报,一经查实,本站将立刻删除。