如何在一个普通的UIButton
上添加一个标准的徽章?
如果半原生支持不可行,那么最简单的方法是什么?
示例图像:
如何在一个普通的UIButton
上添加一个标准的徽章?
如果半原生支持不可行,那么最简单的方法是什么?
示例图像:
这里有一个由Sascha Paulus创建的非常好的类,名为CustomBadge,它使用核心图形构建和呈现自定义徽章。它们只是UIView子类,因此您可以像使用其他UIView子类一样使用它们的框架进行布局。
我已经多次使用过这个库,并且总是对结果感到满意。灵活易用。完全推荐。
苹果使用的类是_UIBadgeView
(https://github.com/nst/iOS-Runtime-Headers/blob/master/Frameworks/UIKit.framework/_UIBadgeView.h),但是这个类是私有的(请注意下划线)且没有文档记录。
这里有另一个类,它以与苹果相同的外观实现了这个视图,同时还允许您自定义它:https://github.com/JaviSoto/JSBadgeView。这个类的好处在于它可以自动相对于另一个视图定位徽章,在其中一个角落中。
我不知道这个功能是否可以直接实现,而且我真的怀疑苹果是否将其构建到SDK中。
无论如何,您可以创建一个自定义视图,并在其中添加一个按钮,将徽章的背景作为UIImageView添加,并放置一个标签以容纳徽章计数。
这是一个快速解决方案,更好的方法可能是创建UIButton
的自定义子类,并将您的徽章内容作为子视图添加。
我会像@Björn Kaiser一样采用类似的方法:按照您喜欢的方式使用按钮,然后将带有徽章的自定义视图作为其子视图添加 - 我已经这样做了,效果很好。
至于视图,您可以根据自己的喜好进行绘制。您可以手动绘制它,也可以使用CoreAnimation让它成为主要部分,即theBadge.layer.cornerRadius = ...;
以使其呈现圆形,使用drawRect:
绘制文本/数字或将其作为标签添加等。