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

来源:互联网 发布:网络大电影 编辑:程序博客网 时间:2024/06/07 22:38

问题描述:

(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.teleNumb:为了永久保存,故退出登录时不移除logId_Key
原创粉丝点击