• iOS17适配指南-新版


    一、iOS17适配点

    • UIView与UIViewController。可以设置数据为空时的占位视图,增加SymbolAnimations,通过addSymbolEffect()与removeSymbolEffect()方法,可以实现SF Symbols图标的添加与移除动画。
    • UIPageControl。增加了类型为UIPageControlTimerProgress的参数progress,可根据指定的时间自动切换。
    • UICollectionViewCompositionalLayout。中的NSCollectionLayoutSize增加了一个新的描述方法uniformAcrossSibling(),可根据内容自适应布局。
    • UIMenu。增加了新的显示模式displayAsPalette。
    • 弹簧动画。增加了新的专属API。
    • Siri。增加了个性化电话(彩铃)、实时语音信箱、FaceTime视频留言、充电侧放待机显示、NameDrop、有意分享、AirDrop远距离网络传输、更准确的输入自动更正、心里健康和视力健康评估等功能。

    二、具体代码

    • UIView与UIViewController适配
      在UIViewController中,可以使用viewWillAppear()和viewDidAppear()方法来添加占位视图,例如:
    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        // 在此处添加占位视图
        self.view.addSubview(placeholderView)
    }
    
    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        // 在此处移除占位视图
        placeholderView.removeFromSuperview()
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • UIPageControl适配
      在UIPageControl中,可以使用type属性来设置类型为UIPageControlTimerProgress,例如:
    let pageControl = UIPageControl()
    pageControl.type = .timerProgress
    pageControl.currentPageIndicatorTintColor = .white
    pageControl.pageIndicatorTintColor = .gray
    
    • 1
    • 2
    • 3
    • 4
    • UICollectionViewCompositionalLayout适配
      在UICollectionViewCompositionalLayout中,可以使用NSCollectionLayoutSize的uniformAcrossSibling()方法来描述内容自适应布局,例如:
    let size = NSCollectionLayoutSize(widthDimension: .fractionalWidth(1), 
                                      heightDimension: .fractionalHeight(1))
    size.uniformAcrossSibling() // 根据内容自适应布局
    let item = NSCollectionLayoutItem(layoutSize: size)
    let group = NSCollectionLayoutGroup.horizontalGroup(with: item.layoutSize) //水平排列group
    collectionViewCompositionalLayout.section(by: 0).contentLayout = group.layout
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • iOS 17中增加了新的弹簧动画API,可以使用以下代码实现弹簧动画效果:
    // 创建弹簧动画
    let springAnimation = UIViewPropertyAnimator(duration: 1, dampingRatio: 0.5) {
        // 动画操作
        self.view.transform = CGAffineTransform(scaleX: 1.2, y: 1.2)
    }
    
    // 启动弹簧动画
    springAnimation.startAnimation(nil)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    其中,UIViewPropertyAnimator是弹簧动画的专属API,可以用于创建弹簧动画。在创建弹簧动画时,需要指定动画的持续时间和阻尼比等参数。动画操作可以根据需求而定,例如可以使用transform属性来改变视图的尺寸、位置等属性。启动弹簧动画时,需要调用startAnimation()方法。

  • 相关阅读:
    【AI视野·今日Robot 机器人论文速览 第三十八期】Thu, 21 Sep 2023
    SpringBoot整合RabbitMQ
    myBatis
    Python imgaug库的使用
    Django-聚合查询
    嵌入式开发:提示和技巧——用C进行防御性编程的最佳实践
    threejs给3d模型中的物体换肤(修改材质)
    (Python)MATLAB mat矩阵和Python npy矩阵转换
    从实战中学前端:打造自己的 html5 文件上传插件
    ElasticSearch深度分页详解
  • 原文地址:https://blog.csdn.net/qq_31810357/article/details/133089935