iOS-未读消息的小红点展示

问题描述:

(1)进入首页后,登录状态下的账户tabbar上会展示小红点儿
(2)进入账户页后,消息图标上也有小红点儿
(3)情况一:只要有未读消息就展示红点
(4)情况二:只要点击进入消息页面,则返回后红点儿消失(尽管还有未读消息)

1.只要有未读消息就展示红点

(1)首页接口增加是否有未读消息字段:isRead_Home

let item = self.tabBarController?.tabBar.items?[2]
if isRead_Home == "1"{//有未读消息

     item?.image = UIImage(named:"账户红点.png")?.withRenderingMode(UIImageRenderingMode.alwaysOriginal)

}else{//未读消息

     item?.image = UIImage(named:"账户无红点.png")?.withRenderingMode(UIImageRenderingMode.alwaysOriginal)
 }

(2)账户接口增加是否有未读消息字段:isRead_Mine

let item = self.tabBarController?.tabBar.items?[2]
if isRead_Mine == "1"{//有未读消息

     self.redImg?.isHidden = false //红点图标img

}else{//未读消息

     item?.image = UIImage(named:"账户无红点.png")?.withRenderingMode(UIImageRenderingMode.alwaysOriginal)
}

2.只要点击进入消息页面,则返回后红点儿消失(尽管还有未读消息)

(1)首页接口增加最新消息:logId + 是否有未读消息字段:isRead_Home,且本地保存logId_Local,初始值为0

账户红点的展示与否:

let logId_Local = UserDefaults.standard.integer(forKey: logId_Key)
let item = self.tabBarController?.tabBar.items?[2]

if logId_Local == 0 && isRead_Home == "0"{//有未读消息


    item?.image = UIImage(named:"账户红点.png")?.withRenderingMode(UIImageRenderingMode.alwaysOriginal)

}else if logId_Local == logId{//无未读消息

     item?.image = UIImage(named:"账户无红点.png")?.withRenderingMode(UIImageRenderingMode.alwaysOriginal)

}else{//有未读消息

      item?.image = UIImage(named:"账户红点.png")?.withRenderingMode(UIImageRenderingMode.alwaysOriginal)
}

(2)账户也增加跟首页同样的字段,且在点击消息页面后,将logId_Local重新赋值

let logId_Local = UserDefaults.standard.integer(forKey: logId_Key)
let item = self.tabBarController?.tabBar.items?[2]
if logId_Local == 0 && isRead_Mine == "0"{//有未读消息

      self.redImg?.isHidden = false

}else if logId_Local == self.logId {//无未读消息

      self.redImg?.isHidden = true
      item?.image = UIImage(named:"账户点击前.png")?.withRenderingMode(UIImageRenderingMode.alwaysOriginal)

}else{//有未读消息

     self.redImg?.isHidden = false
}

点击消息按钮:

func enterMessage(){//消息

    //更新本地存储状态:
    UserDefaults.standard.setValue(logId, forKey: logId_Key)
    UserDefaults.standard.synchronize()

    //跳转消息界面:
    let vc = MessageViewController();
    vc.hidesBottomBarWhenPushed = true;
    self.navigationController?.pushViewController(vc, animated: true)      
}

3.技术说明:

(1)tabbar上的红点儿展示:

 **获取账户tabbar
 let item = self.tabBarController?.tabBar.items?[2]
 **切换图片 
 item?.image = UIImage(named:"账户红点.png")?.withRenderingMode(UIImageRenderingMode.alwaysOriginal)
 item?.image = UIImage(named:"账户无红点儿.png")?.withRenderingMode(UIImageRenderingMode.alwaysOriginal)
 **系统自带:
 item?.badgeValue = "2"//显示消息条数为 2

(2)userDefaults保存“logId

a:key值的定义需添加手机号,用以区分用户:let logId_Key = "logId_Local" + self.teleNum
b:为了永久保存,故退出登录时不移除logId_Key
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值