我是靠谱客的博主 失眠八宝粥,最近开发中收集的这篇文章主要介绍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

最后

以上就是失眠八宝粥为你收集整理的iOS-未读消息的小红点展示的全部内容,希望文章能够帮你解决iOS-未读消息的小红点展示所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部