首页 > 其他分享 >iOS 17新特性以及适配细节汇总

iOS 17新特性以及适配细节汇总

时间:2023-09-14 17:56:16浏览次数:49  
标签:17 适配 iOS scrollView let viewDidLoad func override view

1、UIScrollView
增加了属性allowsKeyboardScrolling表示是否根据连接的物理键盘的方向键而滚动。

import UIKit

class ViewController: UIViewController {
    lazy var scrollView: UIScrollView = {
        let scrollView = UIScrollView(frame: CGRect(x: 0,
                                                    y: 0,
                                                    width: UIScreen.main.bounds.width,
                                                    height: UIScreen.main.bounds.width))
        let imageView = UIImageView(image: UIImage(named: "img"))
        scrollView.addSubview(imageView)
        scrollView.contentSize = imageView.bounds.size
        // iOS17新增,默认为true
        scrollView.isScrollEnabled = false
        return scrollView
    }()

    override func viewDidLoad() {
        super.viewDidLoad()

        view.addSubview(scrollView)
    }
}

2、applicationIconBadgeNumber
UIApplication 的applicationIconBadgeNumber属性被废弃,建议使用UNUserNotificationCenter.current().setBadgeCount()方法。

import UIKit
import UserNotifications

class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
    }

    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        // iOS17之后设置角标,需要先授权
        // UNUserNotificationCenter.current().setBadgeCount(10)
        UNUserNotificationCenter.current().setBadgeCount(10) { error in
            if let error {
                print(error)
            }
        }
    }
}

3、UIDocumentViewController
新增视图控制器,用于显示与管理本地或者云端文档。

import UIKit

class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
    }

    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        let documentViewController = UIDocumentViewController()
        documentViewController.openDocument { _ in
            print("打开文档")
        }
        present(documentViewController, animated: true)
    }
}

4、UIHoverStyle
UIView 增加了一个hoverStyle属性,可以设置鼠标移动到 UIView 之上的效果。

import UIKit

class ViewController: UIViewController {
    lazy var redView: UIView = {
        let view = UIView(frame: CGRect(x: 200, y: 200, width: 200, height: 200))
        view.backgroundColor = .red
        // iOS17新增UIHoverStyle,可以设置Hover的效果与形状(UIShape)
        let hoverStyle = UIHoverStyle(effect: .lift, shape: .capsule)
        // iOS17新增,鼠标移动到UIView之上的效果
        view.hoverStyle = hoverStyle
        return view
    }()

    override func viewDidLoad() {
        super.viewDidLoad()

        view.addSubview(redView)
    }
}

5、编译报错cfstring constant not pointer aligned

解决办法:Build Settings -> Other Linker Flags 加入-ld64

6、编译报错Sandbox:rsync.sanba deny(1) file-write-create xxx

使用 Xcode15 新建项目后,pod 引入部分第三方会报上面的错误
解决办法:Build Settings 搜索 sandbox,把 Build Options 中的 User Script Sandboxing改为 NO

7、编译报错UIGraphicsBeginImageContextWithOptions崩溃

参考链接:UIGraphicsBeginImageContext Deprecated

YYText使用时会崩溃在UIGraphicsBeginImageContextWithOptions

标签:17,适配,iOS,scrollView,let,viewDidLoad,func,override,view
From: https://www.cnblogs.com/xjf125/p/17703055.html

相关文章

  • iOS开发实战-仿小红书App开发-1-App创建与Git
    1.新建项目 2.添加Git仓库 添加自己的gitHub账号.  3.Token获取方式: Settings. DeveloperSettings. 获取个人Token. 填写相关内容.得到Token后复制它,拿到Xcode中登录. 填写相关信息. 创建后打开GitHub,查看自己的所有仓库,发现小粉书仓库已......
  • SpringBoot 3.0最低版本要求的JDK 17,这几个新特性不能不知道
    最近,有很多人在传说SpringBoot要出3.0的版本了,并且宣布不再支持Java8,最低要求是Java17了。其实,早在2021年9月份,关于SpringFramework6.0的消息出来的时候,Spring官方就已经明确了不会向下兼容,最低的JDK版本是JDK17。2022年,SpringFramework6.0和SpringBoot3.0都......
  • axios+formdata上传多个文件(随手记录一下)
    <template><el-row><el-col:span="20":offset="4"style="text-align:left"><spanstyle="margin-left:200px">上传图片</span><el-uploadstyle="......
  • ORA-01775: looping chain of synonyms
    检查其他表、视图、函数等有无重复定义过同义词select*fromall_synonymswheretable_owner='HD40'andsynonym_namenotlike'%/%'andSYNONYM_nameLIKE'%VENDORAPPLY%'andtable_namenotin(selectobject_namefromuser......
  • 在ios系统上实现更改IP地址
    在当今的互联网环境中,我们经常需要更改手机的IP地址来避免一些限制或保护我们的隐私。然而,在iOS系统上,更改IP地址并不像在其他平台上那么容易。因此,本文将分享一种简单的方法,帮助您在iOS系统上免费更改手机的IP地址。在iOS系统上,我们可以通过使用动态ip(虚拟专用网络)来更改手机的IP......
  • Learn Git in 30 days——第 17 天:关于合并的基本观念与使用方式
    写的非常好的一个Git系列文章,强烈推荐原文链接:https://github.com/doggy8088/Learn-Git-in-30-days/tree/master/zh-cn 我曾在【第08天:关于分支的基本观念与使用方式】提过关于「分支」的基本观念与用法,现在则要来讲「合并」如何进行。由于Git是一种分布式版本控制系统(......
  • jquery rem 适配移动端各机型
    //初始化调用  $(document).ready(function(){  wind() }); //视口发生变化实时调用   $(window).resize(function(){  wind() }) functionwind(){  varviewportWidth=$(window).width();  varbaseFontSize=viewportWidth/......
  • iOS技术博主指南:填写苹果应用上架中的隐私政策信息
    摘要:本文将详细介绍iOS技术博主在苹果应用上架过程中如何填写隐私政策信息。博主可以通过AppStoreConnect为应用程序提供隐私政策网址和用户隐私选项网址,并了解如何填写隐私政策文本。本文将提供步骤和注意事项,帮助博主顺利完成隐私政策信息的填写。引言:为了保护用户的隐私权益......
  • 17-浮点数-自动转换-强制转换-增强赋值运算符
         ......
  • 微信 H5 页面兼容性——适配用户修改微信客户端字体大小
    关于微信安卓端网页字体适配的通知微信安卓版7.0.10版本起,网页的字体会跟随微信设置里的字体大小更改而变化。当用户修改微信客户端字体大小后,微信公众号网页的适配就会变得非常繁琐,Android系统设备有8级字体大小,IOS系统设备有7级字体大小,尤其将字体放大到最大一级后,......