精华内容
下载资源
问答
  • iOS11新特性

    2017-09-05 11:56:33
    Core ML 所扮演的角色更多的是将已经训练好的模型转换为 iOS 可以理解的形式,并且将的数据“喂给”模型,获取输出。抽象问题和创建模型虽然并不难,但是对模型的改进和训练可以说是值得研究一辈子的事情,这篇...

    新增框架

    新加入 SDK 的大的框架有两个,分别是负责简化和集成机器学习的 Core ML 和用来创建增强现实 (AR) 应用的 ARKit
    Core ML 所扮演的角色更多的是将已经训练好的模型转换为 iOS 可以理解的形式,并且将新的数据“喂给”模型,获取输出。抽象问题和创建模型虽然并不难,但是对模型的改进和训练可以说是值得研究一辈子的事情,这篇文章的读者可能也不太会对此感冒。好在 Apple 提供了一系列的工具用来将各类机器学习模型转换为 Core ML 可以理解的形式。籍此,你就可以轻松地在你的 iOS app 里使用前人训练出的模型。这在以前可能会需要你自己去寻找模型,然后写一些 C++ 的代码来跨平台调用,而且难以利用 iOS 设备的 GPU 性能和 Metal (除非你自己写一些 shader 来进行矩阵运算)。Core ML 将使用模型的门槛降低了很多。
    ARKit 极大降低了普通开发者玩 AR 的门槛,也是 Apple 现阶段用来抗衡 VR 的选项。可以畅想一下更多类似 Pokémon Go 的 AR 游戏 (结合实境的虚拟宠物什么的大概是最容易想到的) 能在 ARKit 和 SceneKit 的帮助下面世,甚至在 iPad Pro 现有技能上做像是 AR 电影这样能全方位展示的多媒体可能也不再是单纯的梦想。

    Xcode 编辑器和编译器

    速度就是生命,而开发者的生命都浪费在了等待编译上。Swift 自问世以来就备受好评,但是缓慢的编译速度,时有时无的语法提示,无法进行重构等工具链上的欠缺成为了最重要的黑点。Xcode 9 中编辑器进行了重写,支持了对 Swift 代码的重构 (虽然还很基础),将 VCS 提到了更重要的位置,并添加了 GitHub 集成,可以进行同局域网的无线部署和调试。
    这里写图片描述

    其他值得注意的变更

    1.拖拽 - 很标准的一套 iOS API,不出意外地,iOS 系统帮助我们处理了绝大部分工作,开发者几乎只需要处理结果。UITextView 和 UITextField 原生支持拖拽,UICollectionView 和 UITableView 的拖拽有一系列专用的 delegate 来表明拖拽的发生和结束。而你也可以对任意 UIView 子类定义拖拽行为。和 mac 上的拖拽不同,iOS 的拖拽充分尊重了多点触控的屏幕,所以可能你需要对一次多个的拖拽行为做些特别处理。
    2.新的 Navigation title 设计 - iOS 11 的大多数系统 app 都采用了新的设计,放大了导航栏的标题字体。如果你想采用这项设计的话也非常简单,设置 navigation bar 的 prefersLargeTitles 即可。
    3.FileProviderFileProviderUI - 提供一套类似 Files app 的界面,让你可以获取用户设备上或者云端的文件。相信会成为以后文档相关类 app 的标配。
    4.不再支持 32 位 app - 虽然在 beta 1 中依然可以运行 32 位 app,但是 Apple 明确指出了将在后续的 iOS 11 beta 中取消支持。所以如果你想让自己的程序运行在 iOS 11 的设备上,进行 64 位的重新编译是必须步骤。
    5.DeviceCheck - 每天要用广告 ID 追踪用户的开发者现在有了更好地选择 (当然前提是用来做正经事儿)。DeviceCheck 允许你通过你的服务器与 Apple 服务器通讯,并为单个设备设置两个 bit 的数据。简单说,你在设备上用 DeviceCheck API 生成一个 token,然后将这个 token 发给自己的服务器,再由自己的服务器与 Apple 的 API 进行通讯,来更新或者查询该设备的值。这两个 bit 的数据用来追踪用户比如是否已经领取奖励这类信息。
    6.PDFKit - 这是一个在 macOS 上已经长期存在的框架,但却在 iOS 上姗姗来迟。你可以使用这个框架显示和操作 pdf 文件。
    7.IdentityLookup - 可以自己开发一个 app extension 来拦截系统 SMS 和 MMS 的信息。系统的信息 app 在接到未知的人的短信时,会询问所有开启的过滤扩展,如果扩展表示该消息应当被拦截,那么这则信息将不会传递给你。扩展有机会访问到事先指定的 server 来进行判断 (所以说你可以光明正大地获取用户短信内容了,不过当然考虑到隐私,这些访问都是匿名加密的,Apple 也禁止这类扩展在 container 里进行写入)。
    8.Core NFC - 在 iPhone 7 和 iPhone 7 Plus 上提供基础的近场通讯读取功能。看起来很 promising,只要你有合适的 NFC 标签,手机就可以进行读取。但是考虑到无法后台常驻,实用性就打了折扣。不过笔者不是很熟这块,也许能有更合适的场景也未可知。
    9.Auto Fill - 从 iCloud Keychain 中获取密码,然后自动填充的功能现在开放给第三方开发者了。UITextInputTraits 的 textContentType 中添加了 username 和 password,对适合的 text view 或者 text field 的 content type 进行配置,并填写 Info.plist 的相关内容,就可以在要求输入用户名密码时获取键盘上方的自动填充,帮助用户快速登录。

    展开全文
  • iOS 14新特性与适配要点,swift中iOS的适配要点,以及ios14的一些新特性iOS 14新特性与适配要点,swift中iOS的适配要点,以及ios14的一些新特性
  • iOS 14新特性

    千次阅读 2020-06-23 17:08:46
    iOS 14新特性 文章目录iOS 14新特性✨ 1.Widgets(小组件)????2.App Library(App资源库)✨3. Picture in Picture(画中画)????4.Siri????5.Messages、Memoji✨6.App Clip(小程序)✨7.iOS 14 Developer beta 测试版 ...

    iOS 14新特性


    ✨:重点 🌛:了解 🐢:无关紧要

    ✨ 1.Widgets(小组件)

    小组件这个功能其实原来就有的,只不过原来是在负一页面(首页左滑)中显示,在iOS 14中,苹果让它可以在主屏幕中添加了,与你的APP一起呈现。

    原来的小组件是可以自定义高度的,但在新版的iOS14中,苹果针对小组件做了重新设计,定义了一些尺寸供开发者使用,不清楚还能不能自定义。

    新版的小组件还有个智能叠放功能,它可以在不同的时间呈现不同的小组件。
    以下是iOS 13的负一页面
    在这里插入图片描述

    以下iOS 14的负一页面
    在这里插入图片描述

    🌜2.App Library(App资源库)

    这个功能简直就是强迫症患者的福音了,这个功能比现有的App文件夹还要高端上流。我们都知道,随着手机的储存容量越来越大,App也装的越来越多,就导致手机的页面也越来越多,有时候找App需要翻好几页才能找到。App资源库可以把你的App自动整理起来,而且它也可以隐藏你的其它页面,不需要在现实那么多页面。

    隐藏方式是长按App进入摇动模式,点击底部的翻页提示圆点,就出现App页面的缩放视图。
    App资源库则是在你的页面的最后一页(右滑最后一页)。

    ✨3. Picture in Picture(画中画)

    这个功能其实早就有了,但是一直是应用在iPad中,就是再把App放到后台之后,屏幕上出现了一个悬浮窗口播放功能。视频悬浮在应用程序外之后,用户可以很流畅的调节视频窗口大小,特别的是用户还可将它折叠到屏幕侧面以继续在后台播放。

    🌛4.Siri

    原来的Siri使用是全屏交互界面,会覆盖App页面。但在iOS 14做了重新的设计,底部出现新的Siri标志,然后使用Siri打开某个App,会从底部弹出。而查询天气是在顶部已通知栏的形式呈现出来。
    苹果推出来一个新的App,Translate-一款简单易用的翻译软件,可以离线使用,借助机器学习技术和神经网络引擎技术可以翻译文本和语音,支持中文、英语等11中语言

    🐢5.Messages、Memoji

    新增了消息置顶功能,被置顶的发件人来信息是有特殊动画效果。
    memoji新加了表情,有了口罩表情,具体自行查看

    ✨6.App Clip(小程序)

    接下来是,WWDC20新出的特性,App Clip(小程序)功能了,它是App的一小部分, 支持苹果支付和苹果登录功能,WWDC对他的描述是这样的“Light and fast,Easy to discover”
    启动方法可以通过浏览器启动、短信消息MapsNFC、或者二维码打开App Clip。

    苹果自己也推出了小程序码App Clips码,使用相机扫描就可打开,开发者使用Xcode和新的SDK的全部功能开发主App的一部分功能,大小不能超过10M

    小结:
    1.目前已知的是他有自己的`App Clips码`,说明需要上架审核,具体时间不清楚,或者已有的App可能会在Connect上可以申请一个`App Clips码`。
    2.Xcode和最新SDK的全部功能开发,就是可以自定义小程序,功能不单一,开发语言应该是OC或者Swift
    

    ✨7.iOS 14 Developer beta 测试版

    苹果已经发布了iOS 14 Developer beta预览版,用户可以通过下载描述文件来更新最新的iOS14抢先体验一波。
    点击链接到Safari浏览器下载描述文件,然后到设置->通用->软件更新,更新最新iOS14系统

    而开发者也可以到官网下载最新的Xcode12 beta版,先尝试使用吧Xcode 12 Beta发行说明
    注意,Xocde12 beta 只支持macOS 10.15.4
    目前仅发布了测试beta版,正式版官方还没定时间,要等iOS 14正式发布

    链接:https://www.jianshu.com/p/1871fde6de95
    来源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    展开全文
  • iOS 新特性

    千次阅读 2014-02-09 16:32:55
    iOS7的特征: 关键字:用户界面的改变、多任务的增强、游戏、地图、AirDrop、应用程序间的音频、点对点的连接、一些的Framework、已有Framework的增强、OC和弃用的一些API等。 用户界面的改变 在iOS7...

    iOS7的新特征:

    关键字:用户界面的改变、多任务的增强、游戏、地图、AirDrop、应用程序间的音频、点对点的连接、一些新的Framework、已有Framework的增强、OC和弃用的一些API等。

    用户界面的改变

    在iOS7整个系统中,每一方面的设计都重点突出功能以及用户的内容——半透明和精致的视觉感受——流畅和逼真的动作——具有清晰、深入和有活力的用户体验。对于开发者来说,无论是创建一个全新的App,或者对已有的程序进行升级更新,在设计的时候,都需要时刻记住这些特点。

     

    在用户界面设计中,新增了一个重要的概念:UIKit动力(UIKit Dynamics)。通过UIKit动力,在我们的程序中可以为UIView对象指定动力行为,以及让别的对象遵循UIDynamicItem协议——(遵循该协议的对象称为动力项[dynamic items])。动力行为通过将现实世界中的行为和特征与程序相结合(例如将重力加入程序的动画中),以提供一种增强用户体验的方法。UIKit默认支持如下5种动力行为:

    吸附行为(UIAttachmentBehavior):有一个对象UIAttachmentBehavior,该对象用来指定两个动力项(项或点)之间的连接,当一个项或者点移动时,吸附的项也随之移动。当然,这个连接并不是完全是静态的(static),吸附的项有两个属性damping(阻尼)和oscillation(震荡),这两个属性决定了吸附项的行为是如何随时间而变化的。

    碰撞行为(UICollisionBehavior):通过对象UICollisionBehavior指定一个边界,并且让各个动力项,在该边界内参与碰撞。UICollisionBehavior对象还可以指定这些动力项适当的回应碰撞。

    重力行为(UIGravityBehavior):通过对象UIGravityBehavior给动力项指定一个重力矢量,具有重力矢量的动力项,会在重力矢量的方向上一直加速,直到与别的动力项产生了冲突或者,遇到了边界。

    推动行为(UIPushBehavior):通过对象UIPushBehavior给动力项指定一个持续的或者瞬时的力(force vector)。

    捕捉行为(UISnapBehavior):通过对象UISnapBehavior给动力项指定一个捕捉点。动力项会根据配置的效果,来抓住这一捕捉点。

    当动力行为被添加到animator(UIDynamicAnimator类的实例对象)时,动力行为就被激活。animator为动力行为的执行提供了上下文。动力项可以有多个行为,只不过所有这些行为都必须添加到相同的animator中。

    更多关于动力行为的使用,请参考UIKit Framework Reference。

    另外还有Text Kit是一个功能齐全、更高级别的Framework——通过该Framework,可以对程序中的文本内容进行精致的排版。Text Kit能够将文本内容按照段落、列和页进行布局。可以很容易的让文本围绕着某个区域进行布局(例如图形),并且可以管理多种字体。值得一提的是,在iOS7中,已经将TextKit整合到所有基于文本的控件中,这样一来,在程序中,对文本的创建、编辑、修改和显示都非常的容易——不像在之前iOS中,需要更多的代码来实现。

    关于动力行为和Text Kit,随后,笔者会给出一些示例,敬请关注!

    下面我们来看看iOS7中对多任务都做了哪些增强。

    多任务的增强

    iOS7中,应用程序的后台执行模型,新增了如下两种类型:

    1. fetch:如果应用程序需要从网络中有规律的下载新数据,那么现在可以通过向系统注册一下,使新数据的下载操作可以定期的被唤醒或者启动以在后台进行下载。注册方法为:在程序的Info.plist中,将UIBackgroundModes键值设置为fetch,然后在app delegate中,使用方法setMinimumBackgroundFetchInterval:来设置下载新数据操作之间的最小时间间隔。另外,必须在app delegate中实现application:performFetchWithCompletionHandler:方法以执行任意的下载。
    2. remote-notifaction:在iOS7之前,程序中使用的推送通知是用来给用户推送新的消息,而有新的消息到达时,如果需要获得消息相关更多内容时,还需要用户启动相应的程序,以在程序中获取新的消息内容,而现在在iOS7中,通过推送通知,可以启动一个后台下载操作任务。要使用这种模型,只需要将程序Info.plist文件中的UIBackgroundModes键值设置为remote-notification,然后在app delegate中实现application:didReceiveRemoteNotification:fetchCompletionHandler: 方法。

    无论是fetch或remote-notification后台执行模型,在适当的时机,都有可能被启动或者从休眠(suspended)状态转移到后台状态。就拿fetch后台模型来说,系统会根据当前可用的信息来来决定启动或者唤醒程序的最佳时机。例如,当网络条件不错,或者设备已经被唤醒的时候,会启动或唤醒程序以执行程序的fetch后台操作。再来看看remote-notification后台执行模型——当有一条新的推送通知到达设备时(在通知用户之前),程序可以先去下载新的消息内容,当内容都准备好之后,就可以通知用户了——可见,对于remote-notification后台执行模型,可以让用户把注意力都集中在内容上,这也符合本文开头提到的iOS7设计重心。

    在程序中,处理后台下载数据时,应用使用NSURLSession类。这个类对已有的NSURLConnection类进行了改进——针对初始化和处理NSURLRequest对象,提供了一个简单的、基于任务的接口。单个NSURLSession对象可以初始化多个下载和上传任务,并且通过它的delegate,可以处理来此服务器的任意身份认证请求。

    关于多任务的更多内容,在随后的博文中,笔者会进行详细的介绍,读者也可以查阅iOS App Programming Guide中的“App States and Multitasking”。

     

    游戏

    在iOS7中,苹果加强了对游戏开发的支持。这主要体现在如下三个方面:

    • Sprite Kit Framework

    Sprite Kit Framework (SpriteKit.framework)提供了一个优化了的硬件加速动画系统——用于创建2D和2.5D游戏。包括了游戏开发中许多重要的基本内容:图形渲染、动画系统、声音播放,并还有一个物理模拟引擎。通过Sprite Kit Framework可以让开发者把工作重点放在游戏内容的设计和交互上。

    Sprite Kit Framework中,内容是以场景(scenes)的形式组织的。一个场景可以包括:纹理对象、视频、基于路径的形状、图片滤镜以及其它有些特殊的效果。Sprite Kit以最有效的方式来决定这些对象在屏幕上的渲染。当需要在场景中对某个对象进行动画时,可以使用Sprite Kit来明确的指定一个动作,或者使用物理模拟引擎给某个对象定义一个物理行为(例如重力、吸附和排斥)。

    除了Sprite  Kit Framework,苹果还提供了Xcode工具来创建粒子发射效果和纹理集合。通过Xcode工具可以管理程序的assets,以及快速的更新Sprite Kit场景。

    更多关于如何使用Sprite Kit,读者可以参考Sprite Kit Programming Guide。苹果也提供了一个示例演示如何使用Sprite Kit:Explained Adventure(From Apple)。

    • Game Controller Framework

    Game Controller Framework (GameController.framework)可以让你在程序中发现并对游戏控制器硬件进行配置。通过Game Controller Framework可以让iOS设备通过无线或者蓝牙进行连接。当控制器可用的时候,该Framework会通知你的程序。

    更多相关信息可以参考Game Controller Programming Guide。

    • Game Center 改进

    在iOS7中,苹果对游戏中心(Game Center)做了如下改进:

    1. 给玩家提供一个与其它玩家互动的机会,即使目前还没有轮到该玩家。通过该功能,可以实现玩家之间的聊天、交易等(即使没有轮到玩家)。
    2. 每个程序的排行榜限制已经从原来的25变为100.通过GKLeaderboardSet对象,可以对你的排行榜进行组织,并把上限增加只500。
    3. 在游戏中进行挑战(做任务)的时候,可以为这个挑战添加条件限制。例如,在驾驶游戏中,指定必须使用相同的车辆。
    4. 为了防止作弊,增加了认证的支持,以及其它有些功能。

    更多关于如何使用新的Game Center功能,请参考Game Center Programming Guide 。

    关于Game Kit Framework,请参考Game Kit Framework。

    地图

    基于地图信息,苹果对Map Kit framework (MapKit.framework)做了大量的改进,并新增了不少功能。使用地图来显示的位置信息现在可以利用3D地图了,可以通过编程的方式来控制地图的视角。Map Kit还做了其它一些重要的改变:

    1. 图层(Overlay)可以被放置在地图中不同的层中,这样就可以将图层放置在相关数据的上面或者下面。
    2. 可以使用MKMapCamera对象在地图中增加一个位置、倾斜和航向信息。摄像头信息可以给地图增加3D视图体验。
    3. 通过MKDirection类可以从苹果那里请求获得方向相关的线路信息。通过获得的线路信息可以创建一个图层并显示到地图中。
    4. MKGeodesicPolyline类可以参照地球的曲率,创建一个基于线条的图层。
    5. 使用MKMapSnapshotter类可以捕捉基于地图的图片。
    6. 目前可视化的图层是基于MKOverlayRenderer的,这取代了之前的图层视图,并提供了一个简单的渲染方法。
    7. 可以使用MKTileOverlay和MKTileOverlayRenderer类来取代地图上已有的大头针(tile)。

    更多相关信息,请阅读Map Kit Framework Reference 。

    AirDrop

    通过AirDrop,用户可以给附近的iOS设备分享图片、文档、URL以及其它有些数据。AirDrop支持内置到已有的UIActivityViewController中——这个类会根据分享的不同数据显示出不同的选项。数据的话,可以通过实现UIActivityItemSource接口后进行发送。大概苹果也不愿意看到超出他们控制的文件分享功能吧,毕竟这和iOS设计的初衷不一样。如果你不使用UIActivityViewController的话,可能是无法在应用里实装AirDrop功能了。苹果建议:如果你的程序中还没有使用这个类,请考虑将其添加到程序中。

    更多关于利用activity view controller来访分享数据的信息,请参考UIActivityViewController Class Reference。

    程序间的音频(inter-App Audio)

    Audio Unit framework (AudioUnit.framework)现在支持程序间的音频了——可以在同一台设备上不同的两个程序之间发送MIDI命令和音频流。例如,通过该功能,你可以使用一个程序来录制音乐,然后将录制的音乐音乐发送到另外一个能对音乐进行处理的程序中。

    为了公开(vend)你程序中的音频数据,需要发布一个AURemoteIO实例来充当音频组件——对其它进程是可见的。在iOS7里面,要在另外一个程序中使用程序间的音频功能,请使用音频组件发现接口。

    更多相关内容请看:Audio Toolbox Framework Reference

    点对点的连接

    通过Multipeer Connectivity framework (MultipeerConnectivity.framework)可以查找附近的设备,并直接与这些设备进行通讯——不需要通过互联网。该Framework具有这样的特点:很容易的创建多点(multipeer)会话、支持稳定、可靠和实时的数据传输。可以看出,通过该Framework,你的程序可以与附近的设备进行通讯,并做到数据的无缝交换。

    该Framework提供了两种方式来查找并管理网络服务:编程方式和基于UI选项。可以使用MCNearbyServiceBrowser类以编程的方式查找并管理设备。另外,我们可以将MCPeerPickerViewController集成到程序中——用来显示用户可以选择的设备列表。

    更多相关信息,请阅读:Multipeer Connectivity Framework Reference

    新增的Framework

    在iOS7中,新增了如下一些Framework:

    1. Game Controller framework(GameController.framework):提供了与游戏相关的硬件通讯接口。
    2. Sprite Kit framework(SpriteKit.framework):提供了基于精灵(sprite-based)的动画和图形渲染。
    3. Multipeer Connectivity framework(MultipeerConnectivity.framework):提供设备间点对点通讯的功能。
    4. JavaScript Core framework (JavaScriptCore.framework):提供了用Objective-C封装的大量标准JavaScript对象。通过该framework可以对JavaScript代码进行评估(evaluate),以及解析JSON。
    5. Media Accessibility framework (MediaAccessibility.framework):管理媒体文件中字幕(closed-caption)内容的显示。通过该Framework与settings的结合,可以让用户开启字幕的显示。
    6. Safari Services framework (SafariServices.framework):通过该framework,可以通过编程的方式将URL添加到用户的Safari阅读列表中。
    展开全文
  • iOS15新特性iOS15适配

    2021-09-24 13:55:16
    一、iOS15新特性 1.1、iOS15兼容的设备 iPhone6S以上,包括SE第一/二代,iPod touch第七代 具体6s、6sPlus、7、7Plus、8、8plus、X、XR、XsMax、Xs、11、11Pro、11ProMax、12、12Pro、12ProMax、12mini、13、13...

    一、iOS15新特性

    1.1、iOS15兼容的设备

    9.21  iOS15.0正式版

    iPhone6S以上,包括SE第一/二代,iPod touch第七代

    具体6s、6sPlus、7、7Plus、8、8plus、X、XR、XsMax、Xs、11、11Pro、11ProMax、12、12Pro、12ProMax、12mini、13、13Pro、13ProMax、13mini

    1.2、iOS15新特性

    专注模式,就是确保用户在一个时间段里屏蔽各种骚扰、非必要的内容不看不听,来提升做其他事情的效率。苹果做了各种细致分类,能进行量身定制。

    NFC增强版 NFC能模拟公交卡、门禁卡等,能把手机强化为卡证管理平台,在中高端安卓手机很普及。苹果的NFC功能限制非常多,要与指定的开发商合作才能启用,故实用性低。

    看图识字 图中文字能提取出来进行复制分享。

    FaceTime 提供人物虚化功能、麦克风选收听人声或全场景声

    二、iOS15适配

    Xcode13编译工程后,问题:

    2.1、NavigationBar

    问题:导航栏问题比较明显,有的变白色,有的变黑色。(我们项目里有navigationBar原本白色现在变成灰色)

    原因:UINavigationBar 部分属性的设置在 iOS15 上是无效的。

    解决办法:查看导航栏API,iOS15的导航栏属性需用UINavigationBarAppearance(iOS13更新的API)来实现。

    swift

            if #available(iOS 13.0, *) {
                let appearance = UINavigationBarAppearance()
                  // 设置导航栏背景色
                appearance.backgroundColor = .white
                  // 去除导航栏阴影(如果不设置clear,导航栏底下会有一条阴影线)
                appearance.shadowColor = UIColor.clear
                  // 字体颜色
                appearance.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.white]
                // 带scroll滑动的页面
                navigationController?.navigationBar.scrollEdgeAppearance = appearance
                // 常规页面
                navigationController?.navigationBar.standardAppearance = appearance 
            }
    

    Objective-C

        if (@available(iOS 13.0, *)) {
            UINavigationBarAppearance * appearance = [[UINavigationBarAppearance alloc] init];
            // 背景色
            appearance.backgroundColor = [UIColor whiteColor];
            // 去除导航栏阴影(如果不设置clear,导航栏底下会有一条阴影线)
            appearance.shadowColor = [UIColor clearColor];
            // 字体颜色
            appearance.titleTextAttributes = @{NSForegroundColorAttributeName: [UIColor redColor]};
            // 带scroll滑动的页面
            self.navigationController.navigationBar.scrollEdgeAppearance = appearance;
            // 常规页面
            self.navigationController.navigationBar.standardAppearance = appearance;
        }

    对NavigationBar是白底黑字的app影响不大

    2.2、UITabBar

    背景色失效 (这个问题在我们项目里其中一个tab下存在)

    swift

            if #available(iOS 13.0, *) { 
                let appearance = UITabBarAppearance()
               // 背景色
                appearance.backgroundColor = .white
                tabBar.standardAppearance = appearance
                if #available(iOS 15.0, *) {
                    tabBar.scrollEdgeAppearance = appearance
                }
            } 
    

    Objective-C

        if (@available(iOS 13.0, *)) { 
            UITabBarAppearance * appearance = [[UITabBarAppearance alloc] init];
             // 背景色
            appearance.backgroundColor = [UIColor whiteColor];
            self.tabBar.standardAppearance = appearance; 
            if (@available(iOS 15.0, *)) {
                self.tabBar.scrollEdgeAppearance = appearance;
            }
        }

    2.3 TableView

    问题:a).初始化 UITableView用UITableViewStylePlain样式,发现 sectionHeader 增高了 22px

    (这个问题在我们项目里也是有遇到的)

    原因:iOS 15 的 UITableView 新增了一条新属性:sectionHeaderTopPadding, 默认会给每一个 sectionHeader 增加一个高度

    解决办法:

    swift代码
        if #available(iOS 15.0, *) {
            tableView.sectionHeaderTopPadding = 0
        }
    
    Objective-C代码
        if (@available(iOS 15.0, *)) { 
            tableView.sectionHeaderTopPadding = 0;
        }

    b).初始化 UITableView用UITableViewStylePlain样式,默认不显示灰色,上滑置顶时最上面的sectionHeader才有颜色。

    解决办法:在viewForHeaderInSection代理方法返回自带灰色的section header

    2.3.2、a)设置 tableHeaderView 后,底部会增加一段高度 (需验证)

    解决方案:在设置tableHeaderView时同时设置一个高度为0.01的tableFooterView即可:

    tableView?.tableFooterView = UIView(frame: CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: 0.01))

    b)storyboard里的tableView,适配屏幕尺寸改tableHeaderView高度,调layoutIfNeeded不生效,只高度改了,布局没改。

    DispatchQueue.main.asyncAfter(deadline: .now() + 0.05) {
    if let headerView = self.tableView?.tableHeaderView, let lastSubView = headerView.subviews.last {
    if #available(iOS 15.0, *) {
    headerView.frame = CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: lastSubView.frame.origin.y + lastSubView.frame.size.height)
    self.tableView?.tableHeaderView = headerView
     } else {
    self.tableView?.tableHeaderView?.frame = CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: lastSubView.frame.origin.y + lastSubView.frame.size.height)
    self.tableView?.tableHeaderView?.layoutIfNeeded()
            }
        }
    }
    

    2.4、UILabel

    2.4.1、 NSBaselineOffsetAttributeName属性的值导致虽然约束没有问题但label内的文字位置不对

    (这个问题在我们项目里有遇到的)

    现在是以控件最上面的线为基准的偏移。所以用到这个属性的可以检查下。

    2.4.2、NSMutableParagraphStyle的lineSpacing属性失效 解决办法加上换行符 \b或\n等

    Xcode12打的包在iOS15显示无效,而Xcode13打的包在iOS15有效

    if (@available(iOS 15,*)) {

                NSAttributedString *placeholderChractor = [[NSAttributedString alloc] initWithString:@"\b"];

                [as insertAttributedString:placeholderChractor atIndex:0];

            }

            [as addAttributes:@{NSParagraphStyleAttributeName: style} range:NSMakeRange(0, as.length)];

    (这个问题在我们项目里有遇到的)

    2.4.3、增加高度解决

    iOS15计算的正好显示完Label文字高度,在IOS15显示不全,增加高度可解决。设置adjustsFontSizeToFitWidth为true时,高度不能与设置的font一样大,增加高度即可。(应该是Beta的问题 目前看正式版已修复)

    2.5、检查用到的第三方库

    如:第三方播放器框架ZFPlayer横屏出现问题,没有正确渲染布局,且无法切回竖屏页面
    有几率闪退。第三方BRPickerView文字选择器内容布局错误。Facebook的跨平台框架React中的fishhook闪退。

    解决办法:修改源码或看作者有没有适配

    修改fishhook.c源码,参考https://github.com/facebook/fishhook/issues/85 中的XuweiQT的方案,将链接中的fishhook.c替换项目中fishhook.c文件

    2.6、H5在WKWebView的显示问题

    部分链接在iOS15的WKWebView、微信、QQ、Safari中出现空白页about:blank

    (应该是Beta的原因,目前正式版没有遇到)

    以上iOS15正式版有的适配问题,除NSMutableParagraphStyle的lineSpacing属性失效问题,和标记为Beta的外,其他用Xcode12编译打的包在IOS15设备使用不出现,而用Xcode13编译会出现问题

    参考以下文章,感谢👍

    【1】https://www.jianshu.com/p/10c7921e6d76

    【2】https://www.jianshu.com/p/79ecec07d8d5

    延伸:关于iOS新特性这里不多说了,可看以下这几篇比较详细。

    iOS15系统如期而至,谈谈iPhone X手机适配性的使用感受 - 哔哩哔哩

    苹果 iOS 15 正式版上线!我们整理了 20+个实用功能教你使用_腾讯新闻

    iOS 15 体验全攻略:实测 iOS 15 后,我们总结了这 20+ 新变化

    展开全文
  • 主要介绍了110.iOS10新特性适配教程XCode8新特性解析的相关资料,需要的朋友可以参考下
  • iOS 新特性实现 3DTouch 开发

    千次阅读 2016-07-27 11:00:09
    今天呢来和大家讲一下iOS9的新特性3DTouch开发(iOS10都已经出了Beta版,这篇教程真是来的有点晚……)3DTouch的功能就是用户可以在HomeScreen上通过用力按压屏幕,使屏幕弹出快捷菜单,就好像是我们在Windows上右键...
  • iOS 11正式发布了,下面整理了一些该版本下的特点还有如何进行兼容适配工作需要做的事情,希望能够给你提供到帮助。
  • 开发者所需要知道的iOS7SDK新特性.春风又绿加州岸,物是人非又一年。WWDC2013keynote落下帷幕,iOS开发旅程也由此开启。在iOS7界面重大变革的背后,开发者们需要知道的又有哪些呢。同去年一样,我会先简单纵览地...
  • 开发者所需要知道的 iOS 10 SDK 新特性(苹果ios开发新特性
  • iOS 10.3 开放了更换 app 图标的 API,核心方法是下面这个:。。每周更新关注:http://weibo.com/hanjunqiang 新浪微博!手机加iOS开发者交流QQ群: 446310206
  • iOS9新特性之UIStackView

    2020-08-29 07:21:26
    UIStackView主要包括了四大属性:axis、alignment、distribution、spacing。下面通过本文给大家介绍iOS9新特性之UIStackView的相关知识,感兴趣的朋友一起看看吧
  • 本文档用于下一版本 iOS 更新时,跟踪完善相关博文:http://blog.csdn.net/opengl_es/article/details/50177553 当该大版本有下一大版本产生即 iOS10,那么新建文档再更新
  • 本篇文章主要介绍了详解IOS11新特性之larget title的实现,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 源码iOS-9-Sampler,iOS 9 新特性的代码示例。使用 Xcode 7 编译。内容包括自定义地图、文本检测、图片滤镜、CASpringAnimation、UIStackView、省电模式、字体,等等。
  • iOS 11 为整个生态系统的 UI 元素带来了一种更加大胆、动态的...下面这篇文章主要给大家总结介绍了关于iOS 11的一些新特性适配实践,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。
  • 一个非常简易的新特性集成框架NewFeatures 全自动化的文字适配 仿微信朋友圈图片浏览器 iOS你的爱心❤️动画源码 一个类似系统, 微信, QQ, 等等App的alertView弹窗.HDAlertView iOS音频...
  • iOS 新特性分列式 之 iOS 8.x - 主要内容:应用扩展、手动对焦、Size Class
  • 序言 众所周知,iOS中消息推送扮演了不可或缺的位置...新特性 Grouped notifications 推送分组 Notification content extensions 推送内容扩展中的可交互和动态更改Action Notification management 推送消息的管理
  • iOS 新特性分列式 之 iOS 9.1 - 主要内容:苹果笔 API 引入
  • ios 4 新特性 多任务

    2019-03-30 01:08:34
    NULL 博文链接:https://o0o0o0o.iteye.com/blog/1312452
  • 最近在研究iOS10关于推送的新特性, 相比之前确实做了很大的改变,总结起来主要是以下几点:  1.推送内容更加丰富,由之前的alert 到现在的title, subtitle, body  2.推送统一由trigger触发  3.可以为推送增加...
  • 使用swift3,0编写的版本新特性的demo,可直接运行
  • 主要介绍了iOS10开发和Xcode 8新特性及常见问题解析的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
  • iOS 新特性分列式 之 iOS 6.x - 主要内容:自动布局、集合视图、UI 状态保持
  • 这种风格最明显的变化就是使用了iOS 11的新特性–Large Title和新的SearchController。 Demo GitHub: LargerTitleDemo   Large Title & Table View 设置Lager Title APP全局使用Large Title - (BOOL)application:...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 116,691
精华内容 46,676
关键字:

ios新特性