RJBadgeKit
RJBadgeKit copied to clipboard
小红点在navigationBar上点击效果的问题
我设置小红点在viewController.navigationItem.rightBarButtonItem上,显示是OK的,但是点击时候如果push到下个界面,小红点的一半就消失了。
下图为app导航栏(系统自带导航栏),当该界面push到下个vc的时候,小红点的一半就消失了,请问如何解决?
在pull request里面已经重构了 请看我的分支:https://github.com/zljkevin/RJBadgeKit 给个小星星哦
试了下感觉是系统在push的时候把超出bounds的视图都先clip掉了

UIButton *mark = [[UIButton alloc] initWithFrame:CGRectMake(0.0f, 12.0f, 70, 40)];
mark.badgeOffset = CGPointMake(-12, 10);
[mark setBackgroundColor:[[UIColor redColor] colorWithAlphaComponent:0.2]];
[mark setTitleEdgeInsets:UIEdgeInsetsMake(0, -8, 0, 0)];
你先把Button背景区域放大(image和text通过EdgeInset保持显示区域不变),使得红点不超出父view的rect. 这样暂时规避这个问题。后面我再仔细看一下解决方案。
BTW, 谢谢使用和提出问题!
@kegan23 我看你刚刚的comment发了好几条重复的,想着把重复的删掉的,结果一删全删了,汗。。。
应该是系统动画引起的:
-
(void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; self.navigationItem.rightBarButtonItem.badgeOffset = CGPointMake(-15, 0);
/** @note Example for refresh badge display of -'mark' button on navigation bar, which may not appear at first due to autolayout procedure of navigation items. */ [self.badgeController refreshBadgeView];
}
@zljkevin 把offset设成-15, 小红点就完全在button里面了,没有超出父view的frame, 所以就正常了,把动画去掉问题应该还在,只是太快看不到了
@RylanJIN 我的分支UIBarButtonItem badgeView获取的是系统的,暂时只能调offset
@zljkevin @RylanJIN 感谢两位解答,目前通过修改父view的frame显示正常了,十分感谢。