RJBadgeKit icon indicating copy to clipboard operation
RJBadgeKit copied to clipboard

小红点在navigationBar上点击效果的问题

Open kegan23 opened this issue 6 years ago • 7 comments

我设置小红点在viewController.navigationItem.rightBarButtonItem上,显示是OK的,但是点击时候如果push到下个界面,小红点的一半就消失了。

下图为app导航栏(系统自带导航栏),当该界面push到下个vc的时候,小红点的一半就消失了,请问如何解决?

image

kegan23 avatar Jul 02 '18 03:07 kegan23

在pull request里面已经重构了 请看我的分支:https://github.com/zljkevin/RJBadgeKit 给个小星星哦

zljkevin avatar Jul 02 '18 08:07 zljkevin

试了下感觉是系统在push的时候把超出bounds的视图都先clip掉了

screen shot 2018-07-03 at 10 28 48 am
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, 谢谢使用和提出问题!

rjinxx avatar Jul 03 '18 02:07 rjinxx

@kegan23 我看你刚刚的comment发了好几条重复的,想着把重复的删掉的,结果一删全删了,汗。。。

rjinxx avatar Jul 03 '18 02:07 rjinxx

应该是系统动画引起的:

  • (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 avatar Jul 03 '18 03:07 zljkevin

@zljkevin 把offset设成-15, 小红点就完全在button里面了,没有超出父view的frame, 所以就正常了,把动画去掉问题应该还在,只是太快看不到了

rjinxx avatar Jul 03 '18 03:07 rjinxx

@RylanJIN 我的分支UIBarButtonItem badgeView获取的是系统的,暂时只能调offset

zljkevin avatar Jul 03 '18 03:07 zljkevin

@zljkevin @RylanJIN 感谢两位解答,目前通过修改父view的frame显示正常了,十分感谢。

kegan23 avatar Jul 03 '18 06:07 kegan23