美文网首页
Widget遇到的坑

Widget遇到的坑

作者: Money_YC | 来源:发表于2020-09-29 19:45 被阅读0次

    前言

    前段时间开发的Widget也上线了,今天总结下开发以来遇到的一些问题。
    先附上demo地址[Widget]https://github.com/moneyYouCai/NewWidget-iOS14

    问题

    -适配问题


    widget尺寸.png

    上图可以看到Widget在不同分辨率下的尺寸都是不同,宽高比也是完全不同,这让我们的适配就不会特别的准确。
    本人在写的时候是用Widget高度为标准来进行简单适配,以宽度为329的组件为1:1适配点,虽然不是特别好的适配方式,但看起来也较为可以,如果大家有其他更好的适配方式欢迎指正学习。

    func RatioLen(_ length: CGFloat) -> CGFloat {
      if iPhoneHeight == 812 {
        return length
      }
      else if iPhoneHeight == 896 {
        return (length * 360 / widgetTargetWidth)
      }
      else if iPhoneHeight == 736 {
        return (length * 348 / widgetTargetWidth)
      }
      else if iPhoneHeight == 667 {
        return (length * 321 / widgetTargetWidth)
      }
      else if iPhoneHeight == 568 {
        return (length * 292 / widgetTargetWidth)
      }
      return length
    }
    

    如果App做了适配ipad,对于Widget来说不同考虑很服,因为苹果对与ipad上显示widget 也和上面尺寸是一样的。

    -图片加载问题
    Widget中的图片下载是同步下载,如果图片数量过多,则组件页面内容显示会特别慢。如果能在图片加载完之后再去刷新widget,则是一种比较合适的办法。
    在这里我说一下思路,大家可以一起参考一下。我们在下载图片的时候运用

    DispatchQueue.global(qos: .background).async
    

    当图片下载完之后回到主线程中去刷新Widget

    DispatchQueue.main.async {
        WidgetCenter.shared.reloadAllTimelines()
    }
    

    当然这里要使用一个变量templeImage来判断图片是否加载完成。

    -低版本手机打开崩溃问题
    这个问题相信大家也都遇到过,在低于iOS14系统的手机上运行会直接崩溃,崩溃原因说是找不到WidgetKit,当然低统是没有WidgetKit这个库的。解决办法其实也很简单,使用canImport,具体代码如下

    #if canImport(WidgetKit)
    import WidgetKit
    #endif
    
    class WidgetReloadData: NSObject {
        @objc public func fetch() {
          if #available(iOS 14.0, *) {
              #if arch(arm64) || arch(i386) || arch(x86_64)
               WidgetCenter.shared.reloadAllTimelines()
              #endif
          }
        }
    }
    
    接着把WidgetKit.framework的status设置成Optional就可以了 status.png

    -同过Url链接跳转主App崩溃问题
    如果url里面有json字符串,直接使用URL(string: url!),一般都会崩溃,需要Encoding

     Link(destination: URL(string: url.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)!)!) {
    }
    

    笔者最近也还在研究图片加载以及适配问题,希望能和大家一起学习。

    相关文章

      网友评论

          本文标题:Widget遇到的坑

          本文链接:https://www.haomeiwen.com/subject/uhzeuktx.html