目录

iOS-灵动岛-ActivityKit-开发实践

iOS 灵动岛 ActivityKit 开发实践

https://i-blog.csdnimg.cn/direct/a95982f79318437082afe3dcc33475ac.png

https://juejin.cn/post/7220962923736072252

关键记录

需求: 实现灵动岛上靠右显示的倒计时

 Text(timerInterval: <#T##ClosedRange<Date>#>,
                             countsDown: <#T##Bool#>)
                        .multilineTextAlignment(.leading)

1. multilineTextAlignment(.leading)
效果靠右显示

2. countsDown
Bool 值,true 倒计时,false 正计时

3. timerInterval
传入一个时间区间
倒计时:开始时间传当前时间,结束时间传入 当前时间+倒计时长
正计时:开始时间传当前时间-当前计时,结束时间 当前时间+计时总时长

  var timerInterval: ClosedRange<Date> =
        isDown
        ? Date()...Date().addingTimeInterval(TimeInterval(totalSeconds))
        : Date().addingTimeInterval(-TimeInterval(currentSeconds))...Date().addingTimeInterval(TimeInterval(300*60))

跳转路由配置

  1. 点击整块内容,给最外层控件添加路由
    https://i-blog.csdnimg.cn/direct/63dd7fbde0634123a9b8a0a4ae8000cf.png
  2. 单独子控件路由
   // 🔹 单独按钮用 Link
                Link(destination: URL(string: "**/activity/stopTimer")!) {
                    Text("结束计时")
                        .font(.system(size: 12))
                        .frame(width: 68, height: 22)
                        .foregroundColor(Color(hex: "#6BAFEB"))
                        .background(Color.white)
                        .overlay(
                            RoundedRectangle(cornerRadius: 11)
                                .stroke(Color(hex: "#B8DDFF"), lineWidth: 1)
                        )
                        .cornerRadius(11)
                }

处理路由
AppDelegate 文件

 override func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
 
   let str = url.absoluteString
   
   if str.contains("**/activity/stopTimer") {
   
   }
}

感谢您的阅读和参与,HH思无邪愿与您一起在技术的道路上不断探索。如果您喜欢这篇文章,不妨留下您宝贵的赞!如果您对文章有任何疑问或建议,欢迎在评论区留言,我会第一时间处理,您的支持是我前行的动力,愿我们都能成为更好的自己!