iOS 15相关改动

Posted super_man_风清扬

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS 15相关改动相关的知识,希望对你有一定的参考价值。

1、UINavigationBar、UIToolbar 和 UITabBar 设置颜色,图片,模糊效果,需要使用 UIBarAppearance APIs

        let barApp = UINavigationBarAppearance()

        barApp.backgroundEffect = UIBlurEffect(style: .regular)

        self.navigationController?.navigationBar.scrollEdgeAppearance = barApp

        self.navigationController?.navigationBar.standardAppearance = barApp


2、增加UISheetPresentationController,通过它可以控制 Modal 出来的 UIViewController 的显示大小,且可以通过拖拽手势在不同大小之间进行切换。

只需要在跳转的目标 UIViewController 做如下处理:

         if let presentationController = self.sheetPresentationController

            // 显示时支持的尺寸

            presentationController.detents = [.medium(), .large()]

            // 显示一个指示器表示可以拖拽调整大小

            presentationController.prefersGrabberVisible = true

            // 圆角

            presentationController.preferredCornerRadius = 15

       

3、UIButton支持更多配置。UIButton.Configuration是一个新的结构体,它指定按钮及其内容的外观和行为。它有许多与按钮外观和内容相关的属性,

如cornerStyle、baseForegroundColor、baseBackgroundColor、buttonSize、title、image、subtitle、titlePadding、imagePadding、contentInsets、imagePlacement等。

可以方便的使用系统提供的样式,也可以自己创建

// Plain

let plain = UIButton(configuration: .plain(), primaryAction: nil)

plain.setTitle("Plain", for: .normal)

// Gray

let gray = UIButton(configuration: .gray(), primaryAction: nil)

gray.setTitle("Gray", for: .normal)

4、推出CLLocationButton用于一次性定位授权,该内容内置于CoreLocationUI模块,但如果需要获取定位的详细信息仍然需要借助于CoreLocation

宽度设置小于文案和图片显示最小宽度,会按照默认显示大小显示

        let locationBtn = CLLocationButton()

        locationBtn.icon = .arrowFilled

        locationBtn.label = .currentLocation

        locationBtn.cornerRadius = 5

        locationBtn.frame = CGRect(x: 200, y: 600, width: 100, height: 50)

        self.view.addSubview(locationBtn)

5、UITableView 新增了属性 sectionHeaderTopPadding,会给每一个section 的 header 增加一个默认高度。

tableView.sectionHeaderTopPadding = 0


6、UIImage 新增了几个调整尺寸的方法

    @available(ios 15.0, *)
    open func preparingThumbnail(of size: CGSize) -> UIImage?

    @available(iOS 15.0, *)
    open func prepareThumbnail(of size: CGSize, completionHandler: @escaping (UIImage?) -> Void)

    @available(iOS 15.0, *)
    open func byPreparingThumbnail(ofSize size: CGSize) async -> UIImage?


7、URLSession 推出支持 async/await 的 API,包括获取数据、上传与下载


  原数据请求方法:

   static func getBooks(completion: @escaping ([Book]?) -> Void)
    let request = getRequest(suffix: "books")
    
    URLSession.shared.dataTask(with: request) data, response, error in
        if let error = error
            fatalError("Error: \\(error)")
       
        if let data = data
            if let books = try? JSONDecoder().decode([Book].self, from: data)
                DispatchQueue.main.async
                    print("books.count: \\(books.count)")
                    completion(books)
               
                return
            else
                fatalError("Unable to decode JSON")
           
        else
            fatalError("Data is nil")
       
    .resume()


重构后的新方法:

func getBooks() async throws -> [Book]
    let (data, _) = try await URLSession.shared.data(for: request)
    return try JSONDecoder().decode([Book].self, from: data)

1.App 内活动

App 内活动是指 app 和游戏内的时效性活动,例如游戏竞赛、新电影首映和直播体验等。苹果讲允许用户直接在 App Store 上探索 app 内活动,能够以全新方式展示这些活动并扩大其触及的用户群。用户将能够在“Today”、“游戏”和“App”标签页上的个性化推荐和编辑精选中探索相关活动,还可以通过搜索结果和 app 的产品页面了解活动信息。app管理者可以在 App Store Connect 中轻松管理您的活动,并可在“App 分析”中查看关于活动效果的分析数据。


更多详情:https://developer.apple.com/cn/app-store/in-app-events/


2.App Store 产品页面

App所有者,将可以利用 App Store Connect 中产品页面的新功能在 App Store 上触及更多的用户。

    自定产品页面使用不同的推广文本、截屏和 app 预览,创建产品页面的其他版本,更好地展示 app 内的特定功能或内容。通过唯一的链接将相关受众定向到特定页面,并在“App 分析”中查看

        您可以随时在 App Store Connect 中创建新的页面并单独提交这些页面进行审核,而不需提交 app 更新。
        一次最多可以发布 35 个自定产品页面。
        在“App 分析”中查看展示次数、下载次数、转化率等信息,以便监控每个自定产品页面的效果。
        衡量每个自定产品页面的用户留存率和付费用户平均收益,以了解这些页面在一段时间内的效果。

          最多可以创建 35 个自定产品页面,以针对不同受众展示不同的推广文本、截屏和 app 预览。


    产品页面优化
    尝试使用不同的 app 图标、截屏和 app 预览,对比其效果来了解用户的喜好,从而优化默认产品页面。在“App 分析”中查看结果,进而对产品页面做出最佳的决策。

    更多详情:https://developer.apple.com/cn/app-store/product-page-updates/


 

以上是关于iOS 15相关改动的主要内容,如果未能解决你的问题,请参考以下文章

iOS 15相关改动

使用 JWT 受众字段作为授权角色

是否可以有多个具有 clientIds 和 secrets 的受众?

敏捷软件开发 – OCP 开放-封闭原则

最新Scrum阅读感悟

Azure AD 身份验证 401 错误“受众无效” AddAzureADBearer .Net Core Web Api