当前位置: 移动技术网 > 移动技术>移动开发>IOS > iOS中类似微信红点显示功能

iOS中类似微信红点显示功能

2019年07月24日  | 移动技术网移动技术  | 我要评论

设计思路:给uiview增加一个分类 所有的视图都可以根据需要来进行红点显示

#import <uikit/uikit.h>
@interface uiview (chrreddot)
@property (readonly, nonatomic) calayer * chr_reddotlayer;
/**
 红点圆心的位置,与各个边之间的距离。如果距离<=0,则忽略距离
 */
@property (nonatomic, assign) uiedgeinsets chr_reddotedgeinsets;
/**
 红点的半径,默认为4
 */
@property (nonatomic, assign) cgfloat chr_reddotradius;
/**
 红点的颜色,默认为0xff5a5a
 */
@property (nonatomic, strong) uicolor * chr_reddotcolor;
/**
 红点是否显示
 */
@property (nonatomic, assign) bool chr_reddotshow;
@end
#pragma mark - method
- (void)chr_updatereddot {
  calayer *reddot = self.chr_reddotlayer;
  if (self.chr_reddotshow) {
    if (reddot == nil) {
      reddot = [calayer layer];
      self.chr_reddotlayer = reddot;
      [self.layer addsublayer:reddot];
    }
    reddot.backgroundcolor = self.chr_reddotcolor.cgcolor;
    [self chr_layoutreddot];
  } else {
    [reddot removefromsuperlayer];
    self.chr_reddotlayer = nil;
  }
}
- (void)chr_layoutreddot {
  calayer *reddot = self.chr_reddotlayer;
  if (reddot == nil) return;
  cgfloat radius = self.chr_reddotradius;
  reddot.cornerradius = radius;
  uiedgeinsets edgeinsets = self.chr_reddotedgeinsets;
  cgfloat originx = edgeinsets.right <= 0 ? edgeinsets.left - radius : self.bounds.size.width - edgeinsets.right + radius;
  cgfloat originy = edgeinsets.bottom <= 0 ? edgeinsets.top - radius : self.bounds.size.height - edgeinsets.bottom + radius;
  cgfloat length = radius * 2;
  reddot.frame = cgrectmake(originx, originy, length, length);
}

以上所述是小编给大家介绍的ios中类似微信红点显示功能,希望对大家有所帮助

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网