将通知徽章添加到 iOS 中的导航栏
Posted
技术标签:
【中文标题】将通知徽章添加到 iOS 中的导航栏【英文标题】:adding notification badge to Navigation bar in iOS 【发布时间】:2013-09-22 12:26:14 【问题描述】:我正在尝试将徽章添加到我的 ios 应用程序的导航栏,更准确地说是添加到触发我的侧边菜单的菜单按钮。我正在使用此代码
// add badge to the menu button
if (!self.numberBadge)
self.numberBadge = [[MLPAccessoryBadgeEmboss alloc] initWithFrame:CGRectZero];
numberBadge.center = CGPointMake(30.0, 6);
numberBadge.badgeMinimumSize = CGSizeMake(1.0, 1.0);
numberBadge.backgroundColor = [UIColor redColor];
numberBadge.shadowAlpha = 0.9;
numberBadge.cornerRadius = 5.0f;
numberBadge.strokeColor = [UIColor whiteColor];
[self.navigationController.navigationBar addSubview:numberBadge];
[numberBadge setTextWithIntegerValue:9];
因此,徽章显示如下:
现在我一直在尝试修改徽章 uiview 的框架和中心,但是无论我做什么,它都会粘在导航栏的左上角。目前我无法移动它。
有什么建议吗?
【问题讨论】:
您是否在ViewController
中保留了对它的强烈引用,或者您后来如何访问它?
抱歉,我复制了旧代码。已编辑。理想情况下,我想将其移至菜单按钮的右上角。
您将不得不显示更多代码。
【参考方案1】:
您的徽章似乎始终位于导航栏中的 (0, 0) 处。
我假设当您分配 self.numberBadge 时,您将其分配给一个名为 numberBadge 的实例变量,否则您将不得不使用 self.numberBadge。
我会尝试这些事情:
使用不是 CGRectZero 的框架创建视图,而是要放置徽章的框架。有时,使用零帧创建的视图的行为与我预期的不同。 尝试在调用 addSubview 后移动徽章中心,以确保它不会与您的框架混淆。如果还是不行,你可以尝试将徽章添加到普通的 UIView 并检查它是否在那里工作?
【讨论】:
你说得对。添加视图后我移动了中心并且它起作用了。非常感谢。以上是关于将通知徽章添加到 iOS 中的导航栏的主要内容,如果未能解决你的问题,请参考以下文章
向导航栏添加渐变将隐藏 iOS 13.0 + 中的栏按钮项目