{"id":22787211,"url":"https://github.com/mancongios/mctoast","last_synced_at":"2025-04-15T23:38:24.766Z","repository":{"id":62446732,"uuid":"223881925","full_name":"mancongiOS/MCToast","owner":"mancongiOS","description":"Toast交互，Alert展示","archived":false,"fork":false,"pushed_at":"2020-07-14T12:34:07.000Z","size":1389,"stargazers_count":24,"open_issues_count":2,"forks_count":5,"subscribers_count":2,"default_branch":"master","last_synced_at":"2023-10-20T01:48:22.481Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mancongiOS.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-11-25T06:57:47.000Z","updated_at":"2023-10-16T01:45:08.000Z","dependencies_parsed_at":"2022-11-01T23:01:26.220Z","dependency_job_id":null,"html_url":"https://github.com/mancongiOS/MCToast","commit_stats":null,"previous_names":[],"tags_count":5,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mancongiOS%2FMCToast","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mancongiOS%2FMCToast/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mancongiOS%2FMCToast/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mancongiOS%2FMCToast/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mancongiOS","download_url":"https://codeload.github.com/mancongiOS/MCToast/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":229313615,"owners_count":18053712,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-12-12T00:50:37.601Z","updated_at":"2024-12-12T00:50:38.011Z","avatar_url":"https://github.com/mancongiOS.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# Toast For Swift\n\n\n## 概要说明\n\n**MCToast** 是Swift版本的HUD库，提供了显示纯文本的Toast，带有状态图片的Toast，带有loading样式的Toast。\n![Toast.gif](https://upload-images.jianshu.io/upload_images/3424061-20f13f467069cc45.gif?imageMogr2/auto-orient/strip)\n\n\n主要优点：\n\n* Swift语言实现的Toast交互功能库。\n* MCToast内部控制显示在主线程中，保证了线程安全性。\n* 提供了多种使用方式，方便快捷。\n* **支持UI的高度自定义**。配置toast的小图标，文字大小和颜色等\n* 内部处理了多个toast提示重叠显示的问题。\n\n\n\nDemo地址\n\n[https://github.com/mancongiOS/MCToast](https://github.com/mancongiOS/MCToast)\n \n\n\n# 配置\nMCToast已经提供了一套默认值，如果与您的要求不相符，您完全可以根据以下方法通配它。\n  \n在`func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -\u003e Bool`中进行配置项的设置。\n\n```\nextension AppDelegate {\n    func configToast() {\n        // 1. 配置Toast弹出过程中的交互类型（MCToastRespond：禁止交互，导航栏下禁止交互，允许交互）\n        MCToastConfig.shared.respond = MCToast.MCToastRespond.respond\n        \n  \n        // 2. 配置Toast核心区域（黑色区域）\n        // 颜色\n        MCToastConfig.shared.background.color = UIColor.black\n        // 大小\n        MCToastConfig.shared.background.size = CGSize(width: 120, height: 120)\n        \n        \n        // 3. 配置状态Toast（成功，失败，警告等状态）的Icon\n        MCToastConfig.shared.icon.size = CGSize(width: 50, height: 50)\n        MCToastConfig.shared.icon.successImage = UIImage(named: \"你成功状态的Icon\")\n        MCToastConfig.shared.icon.failureImage = UIImage(named: \"你失败状态的Icon\")\n        MCToastConfig.shared.icon.warningImage = UIImage(named: \"你警告状态的Icon\")\n\n        \n        // 4. 配置文字\n        MCToastConfig.shared.text.font = UIFont.systemFont(ofSize: 15)\n        MCToastConfig.shared.text.textColor = UIColor.white\n        MCToastConfig.shared.text.offset = (UIScreen.main.bounds.size.height / 2 - 120 - 150)\n        \n        \n        // 5. 配置间距\n        // 外边距（toast距离屏幕边的最小边距\n        MCToastConfig.shared.spacing.margin = 55\n        // 内边距（toast和其中的内容的最小边距）\n        MCToastConfig.shared.spacing.padding = 15\n        \n        \n        // 6. 设置自动隐藏的时长\n        MCToastConfig.shared.duration = 1.5\n    }\n}\n```\n\n\n# 使用\n#### 支持cocoPods\n\n  ```\n  pod 'MCToast'\n  ```\n\n\n#### 使用\n\n* 显示纯文本\n\n```\nextension MCToast {\n    /// 展示文字toast\n    /// - Parameters:\n    ///   - text: 文字内容\n    ///   - offset: 距离屏幕Y轴中心的距离（正下，负上）\n    ///   - duration: 显示的时间（秒）\n    ///   - respond: 交互类型\n    ///   - callback: 隐藏的回调\n    public static func mc_text(_ text: String,\n                               offset: CGFloat? = nil,\n                               duration: CGFloat = MCToastConfig.shared.duration,\n                               respond: MCToast.MCToastRespond = MCToastConfig.shared.respond,\n                               callback: MCToast.MCToastCallback? = nil) {\n        \n        DispatchQueue.main.async {\n            MCToast.showText(text, offset: offset, duration: duration, respond: respond, callback: callback)\n        }\n    }\n}\n```\n\n  ```\n// 简单使用\nMCToast.mc_text(\"修改成功\")\n // 长文本的换行使用\nMCToast.mc_text(\"这是一个很长长长长长长长长长长长长长长长的纯文本的展示\")\n// 设置文本的偏移量。（以屏幕中心点为原点，正下负上）\nMCToast.mc_text(\"居中显示\", offset: 0)\n// 全量设置\nMCToast.mc_text(\"设置成功\", offset: 100, duration: 2, respond: .default) {\n   print(\"移除了\")\n}\n```\n\n* 带状态的Toast\n\n ```\n  /// 成功的Toast\n  MCToast.mc_success(\"可能出现的长文本提示长文本内容\")\n  /// 失败的Toast\n  MCToast.mc_failure(\"失败\")\n  /// 警告的Toast\n  MCToast.mc_warning(\"警告\")\n  /// 自定义的状态Toast\n  MCToast.mc_codeSuccess()\n  extension MCToast {\n      /// 发送验证码成功\n      public static func mc_codeSuccess() {\n          let image = UIImage.init(named: \"codesend\")\n          MCToast.showStatus(nil, text: \"发送验证码成功\", iconImage: image, duration: 2, respond: .respond)\n      }\n  }\n```\n\n* loading\n```\n  /// 系统的loading\n  MCToast.mc_loading()\n  /// 自定义的帧动画loading\n  MCToast.mc_loading(imageNames: images)\n  /// Json动画的loading （集成了Lottie库）\n  let animation = Animation.named(\"JSON动画\")\n  MCToast.mc_loading(animation: animation) \n  ```\n\n\n* 您也可以直接用self调用。\n作者通过给`UIResponder `添加扩展，达到了使用`self`调用的功能。\n```\nextension UIResponder { }\n```\n```\nself.mc_text(\"这是一个纯文本的展示\", duration: 2)\nself.mc_statusBar(\"有内容更新啦，赶紧看看吧\")\n```\n\n* 隐藏\n```\n// 调用的时候，通过设置展示时间，隐藏\nself.mc_text(\"这是一个纯文本的展示\", duration: 2)\n// 通过其他方法隐藏\nself.mc_remove() \n// 或者 MCToast.mc_remove()\n```\n\n\n* 其他更详细的使用请查看[Demo](https://github.com/mancongiOS/MCToast)\n\n\n\n\n\n\n# 说明\n1. 由于Toast是展示在Window上的，页面返回正在显示的Toast并不会消失。可以在页面的生命周期内调用MCToast.mc_remove()方法达到页面返回消失的目的。\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmancongios%2Fmctoast","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmancongios%2Fmctoast","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmancongios%2Fmctoast/lists"}