宗教活动iOS开发 适配iOS10

宗教活动 1

9.iOS 10 字体随着手机系统字体而反

当我们手机系统字体改变了后来,那我们Applabel否会见随着一块儿变,这得我们形容过多代码来更是处理才实现,但是iOS
10
提供了这么的习性adjustsFontForContentSizeCategory来安。因为无真机,具体实际操作还并未失去贯彻,如果知道错帮忙指正。

  UILabel *myLabel = [UILabel new];   /*
    UIFont 的preferredFontForTextStyle: 意思是指定一个样式,并让字体大小符合用户设定的字体大小。
   */
    myLabel.font =[UIFont preferredFontForTextStyle: UIFontTextStyleHeadline]; /*
 Indicates whether the corresponding element should automatically update its font when the device’s UIContentSizeCategory is changed.
 For this property to take effect, the element’s font must be a font vended using +preferredFontForTextStyle: or +preferredFontForTextStyle:compatibleWithTraitCollection: with a valid UIFontTextStyle.
 */
     //是否更新字体的变化
    myLabel.adjustsFontForContentSizeCategory = YES;

 
经历了短军训时,结下了难以消的军生情义,每天晚于赶往训练地,嘴上还含着刚刚打的包子之类的,这点点滴滴,每天要着军训期间的浅休息,不禁想想,我们尚确实是相同多十分淘气的儿女啊!但是即便如此教官还是对我们十分好,每天晚上想方吃咱凑,每天白天想我们的动作,但是这些还只好留于回顾里了,教官我想你们了!

10.iOS 10 UIScrollView新增refreshControl

宗教活动 2

 

iOS 10 以后如是累UIScrollView那么即使支持刷新功能:

@property (nonatomic, strong, nullable) UIRefreshControl *refreshControl NS_AVAILABLE_IOS(10_0) __TVOS_PROHIBITED;

 

7.iOS 10 UIColor 新增方法

以下是官方文档的证明:

Most graphics frameworks throughout the system, including Core Graphics,
Core Image, Metal, and AVFoundation, have substantially improved support
for extended-range pixel formats and wide-gamut color spaces. By
extending this behavior throughout the entire graphics stack, it is
easier than ever to support devices with a wide color display. In
addition, UIKit standardizes on working in a new extended sRGB color
space, making it easy to mix sRGB colors with colors in other, wider
color gamuts without a significant performance penalty.

Here are some best practices to adopt as you start working with Wide
Color.

  • In iOS 10, the UIColor class uses the extended sRGB color space and
    its initializers no longer clamp raw component values to between 0.0
    and 1.0. If your app relies on UIKit to clamp component values
    (whether you’re creating a color or asking a color for its component
    values), you need to change your app’s behavior when you link
    against iOS 10.

  • When performing custom drawing in a UIView on an iPad Pro (9.7
    inch), the underlying drawing environment is configured with an
    extended sRGB color space.

  • If your app renders custom image objects, use the new
    UIGraphicsImageRenderer class to control whether the destination
    bitmap is created using an extended-range or standard-range format.

  • If you are performing your own image processing on wide-gamut
    devices using a lower level API, such as Core Graphics or Metal, you
    should use an extended range color space and a pixel format that
    supports 16-bit floating-point component values. When clamping of
    color values is necessary, you should do so explicitly.

  • Core Graphics, Core Image, and Metal Performance Shaders provide new
    options for easily converting colors and images between color
    spaces.

坐事先我们且是故RGB来装颜色,反正用起呢不是特地多样化,这次新增的艺术应该就是一个弥补吧。所以于iOS
10
苹果官方建议我们采取sRGB,因为她性能更好,色彩更增长。如果你协调吧UIColor描绘了一样仿分类的讲话也可是尝替换为sRGBUIColor恍如吃新增了有限独Api如下:

+ (UIColor *)colorWithDisplayP3Red:(CGFloat)displayP3Red green:(CGFloat)green blue:(CGFloat)blue alpha:(CGFloat)alpha NS_AVAILABLE_IOS(10_0);

- (UIColor *)initWithDisplayP3Red:(CGFloat)displayP3Red green:(CGFloat)green blue:(CGFloat)blue alpha:(CGFloat)alpha NS_AVAILABLE_IOS(10_0);

 
本作品与#忠贞不渝九月,迷彩青春#军训线上创作征集活动,本人承诺,作品内容吗原创,且未以另外平台及刊载过。

细节提示:在iOS9后头的网面临如下到网图片,也要顾网络图片是否是HTTP的啊,如果是,也只要拿图纸的地段设置哦!

 
但各自总是以九月,14上军训如白驹过隙一般,相聚片刻即便去的如去,不舍的人口,难分的情;眼眶的泪珠,喉中之开口。一切的全套就涌显,军训之中的点点滴滴,分分秒秒切过眼前,教官们的嘻笑怒骂,同学等的一举一动不禁漂过眼前。

  iOS 10 之前UICollectionViewCell的生命周期是这么的:
  • 1.用户滑动屏幕,屏幕外有一个cell准备加载进来,把cell从reusr队列拿出来,然后调用prepareForReuse主意,在斯办法中,可以重置cell的状态,加载新的数据;
  • 2.继续滑动,就会见调用cellForItemAtIndexPath道,在此措施中为cell赋值模型,然后回到给系统;
  • 3.当cell马上上屏幕的时光,就见面调用willDisplayCell方法,在此办法中我们尚得改cell,为进屏幕做最后之预备干活;
  • 4.执行完willDisplayCell法后,cell就进来屏幕了.当cell完全偏离屏幕以后,会调用didEndDisplayingCell方法.

宗教活动 3

12.Xcode 8 插件不可知用底问题

世家还提升了Xcode 8,但是对插件依赖的开发者们,一边哭着一边去网上寻找解决办法。那么下是解决办法:
吃您的 Xcode8
继续使用插件(http://vongloo.me/2016/09/10/Make-Your-Xcode8-Great-Again/?utm\_source=tuicool&utm\_medium=referral
)

可看到文章最后之诠释,我们知道要因此插件的语,可能安全上会出问题、并且付诸审核会被拒绝,所以建议大家还是不要就此了,解决办法总是有,比如以Xcode中添加注释的代码块吧是坏方便的。

 

 
当时底我们将在训练枪,戴在多少军帽,在校园的草坪上摸爬滚打,兴奋不已,都想着拿枪所独有的优越感。“有硌意思”看在咱较相符他求的动作下,教官总是用这四只字激励我们。如今想起当时不禁觉得心轻神爽,但是这些都曾改为回忆,难以再现,不禁惆怅。分别总是在九月,留下的满满当当回忆与情。
如今离开汇演过去了长期,但是军情难忘,难舍。

15、推送的时候,开启Remote notifications

You've implemented -[<UIApplicationDelegate> application:didReceiveRemoteNotification:fetchCompletionHandler:],
but you still need to add "remote-notification" to the list of your supported UIBackgroundModes in your Info.plist.

解决方案:需要在Xcode 中改以之 Capabilities 开启Remote
notifications,请参见下图:

宗教活动 4

16、One of the two will be used. Which one is undefined.”

  objc[5114]: Class PLBuildVersion is implemented in both
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/PrivateFrameworks/AssetsLibraryServices.framework/AssetsLibraryServices
(0x1109a5910) and
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/PrivateFrameworks/PhotoLibraryServices.framework/PhotoLibraryServices
(0x110738210). One of the two will be used. Which one is undefined.

  于模拟器中、发现“One of the two will be used. Which one is
undefined.”日志**

  查找资料发现因:objc runtime 对所用app使用及一个命名空间(flat
namespace),运行机制如下:

  1. 先是二迈入制映像被加载,检查程序依赖关系
  2. 各级一个次之上前制映像吃加载的还要,程序的objc classes在objc
    runtime命名空间被登记
  3. 假设所有相同名称的切近为重新加载,objc
    runtime的行是不足预知的。一栽或的景是不管三七二十一一个序的此类会让加载(这应当为是默认动作)

    17、Invalid Bundle – The asset catalog at ‘Payload/XXXXX/Assets.car’
    can’t contain 16-bit or P3 assets if the app supports iOS 9.3 or earlier

当 Xcode 8
中,当你资源文件被[含有16位图]或者[图形展示模式γ值为’P3′]都iOS
targets设定也iOS 9.3以下就是见面冒出这个题材.
如果您的app需要支持广色域显示的话,那你要得拿target设置成iOS
9.3+,相反,如果你的app不欲支持广色域且若想兼容 iOS 9.3
之前的种类,你就算得把有的16个之或显示模式吧’P3’图片都替换成8位模式之SRGB颜色的图片。

 

公可通过运行“assetutil”在iTunes Connect的错误信息中找到16-bit 或 P3
资源文件。离线的化解方案如下:

1.导出档次的 ipa 文件

2.稳住到该ipa文件修改后缀名.ipa 为 .zip.

  1. 解压该 .zip 文件. 解压后的目内会时有发生一个含有在若的 app bundle
    文件之 Payload 文件夹.

  2. 开拓终端病切换至公的app的Payload文件夹下的 .app
    bundle 文件夹内,形式如下:

cd path/to/Payload/your.app

  1. 从而 find 命令定位到 Assets.car 文件 .app bundle , 形式如下:

find . -name ‘Assets.car’

  1. 用 assetutil 命令找到任何带有着 16-bit or P3 的资源文件, 对每个
    Assets.car 之推行以下命令 :

sudo xcrun –sdk iphoneos assetutil –info /path/to/a/Assets.car >
/tmp/Assets.json

  1.  打开上一样步生成的 /tmp/Assets.json 文件并招来包含有 “DisplayGamut”:
    “P3” 或者相关的内容.
     这段json的”Name”字段对应之价就是是16号或显示的γ值为P3的资源文件名.

    1.  找到这个资源文件修改也 8各之sRGB形式,重新编译上传你的app即可. 
18、This version does not support documents saved in the Xcode 8 format. Open this document with Xcode 8 or later

  编辑项目时默认使用Xcode8打开,导致我于是Xcode7打开Xib是报错:

 This version does not support documents saved in the Xcode 8 format. Open this document with Xcode 8.0 or later

 
 导致用Xcode8打开的Xib全部于不起,只能用编辑器将Xib里面的下面一句话删除掉才能够开拓:

<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>



未完待续,持续更新~

 

  分别在九月,结情也当九月,军训的滴滴点点也融入了九月,不会见免去去!

11.iOS 10 判断系版本是姿势

看清系版本是我们经常用的,尤其是现大家都发出或要适配iOS
10,那么问题便起了,如下图:

宗教活动 5

我们沾了答案是:

//值为 1 [[[[UIDevice currentDevice] systemVersion] substringToIndex:1] integerValue]

//值为10.000000 [[UIDevice currentDevice] systemVersion].floatValue,

//值为10.0 [[UIDevice currentDevice] systemVersion]

故此说判断系方法极其好还是用后的鲜栽方式,哦~我记不清说了[[UIDevice currentDevice] systemVersion].floatValue这个法子呢是休依赖谱的,好像在8.3本子输出的价值是8.2,记不晓得了反而正是不靠谱的,所以建议大家用[[UIDevice currentDevice] systemVersion]其一措施!

Swift判断如下:

  if #available(iOS 10.0, *) {
            // iOS 10.0
            print("iOS 10.0");
        } else { }

 
抚摸着军训时拍的照,看在战友与教练的脸颊,不禁独怆然而泪下。回首过去,教官对咱们的好,我们的浪荡不羁,不禁难舍难分,昔日的战友,我们所用之枪不知现在还吓啊?远去的教练留下的背影让自家未禁泪下,想起教官对咱的渴求:休息为主,训练为辅,练好了相同全副了,没练习好就是练到下肢软。但是我们反复比听话,争取了多数的休息时间,看女排训练,嘲讽男排累。想到就,不禁暗暗偷乐,教官对咱们多好什么!刹时相同道浓浓的不舍的情涌上衷心。

  iOS 10 UICollectionViewCell的生命周期是这么的:
  • 1.用户滑动屏幕,屏幕外有一个cell准备加载进来,把cell从reusr队列拿出来,然后调用prepareForReuse措施,在此间当cell还没进屏幕的时候,就已提前调用这个法了,对比之前的区分是事先是cell的头缘马上进入屏幕的当儿即便会调用该方法,而iOS
    10 提前到cell还当屏幕外的时便调用;
  • 2.在cellForItemAtIndexPath遭逢开创cell,填充数据,刷新状态等操作,相比于前为提前了;
  • 3.用户继续滑动的话,当cell马上就用展示的早晚咱们又调用willDisplayCell办法,原则就是是:何时要出示,何时又失去调用willDisplayCell方法;
  • 4.当cell完全离开屏幕以后,会调用didEndDisplayingCell术,跟之前同一,cell会跻身重用队列.
    在iOS 10
    之前,cell只能由用队列之中取出,再走相同不折不扣生命周期,并调用cellForItemAtIndexPath创办或者好成一个cell.
    在iOS 10
    中,系统会cell保存一段时间,也就是说当用户将cell滑发生屏幕以后,如果同时滑行回来,cell不用更挪相同方方面面生命周期了,只待调用willDisplayCell道就是足以另行出现于屏幕中了.
    iOS 10
    中,系统是一个一个加载cell的,二因前是单排一行加载的,这样虽足以提升广大特性;

    ##### iOS 10 新长的Pre-Fetching预加载

    以此是为了降低UICollectionViewCell在加载的时候所消费的光阴,在 iOS 10
    中,除了数据源协议和代办协议外,新加了一个UICollectionViewDataSourcePrefetching商事,这个协议里定义了少单主意:

  - (void)collectionView:(UICollectionView *)collectionView prefetchItemsAtIndexPaths:(NSArray<NSIndexPath *> *)indexPaths NS_AVAILABLE_IOS(10_0);

  - (void)collectionView:(UICollectionView *)collectionView cancelPrefetchingForItemsAtIndexPaths:(NSArray<NSIndexPath *> *)indexPaths  NS_AVAILABLE_IOS(10_0);

   在ColletionView prefetchItemsAt indexPaths是主意是异步预加载数据的,当中的indexPaths数组是板上钉钉的,就是item接收数据的逐一;
CollectionView cancelPrefetcingForItemsAt indexPaths本条方式是可选的,可以为此来拍卖在滑中收回或退提前加载数据的事先级.
   注意:这个协议并无克替之前读取数据的主意,仅仅是援加载数据.
   Pre-Fetching预加载对UITableViewCell同样适用.

 

 
分别的九月里,我们从家出发,与上下家人分别;军训过后,与军训教官分别。前者会再见,后者不知何期。我起接触悔了,悔未为各级一个我们无限恩爱的教官一个熊抱,未能为他本着自印象深刻,但是转头不错过矣,他们运动了,留下的唯有是满盈之军情,也许成都带不活动的,只有它了。

4.Xcode 8 运行一积没因此之logs解决办法

宗教活动 6

 

落得图我们看来,自己新建的一个工啥也尚无提到就是打印一堆烂七八糟的东西,我觉得这个理应是Xcode 8的问题,

具体为绝非仔细研究,解决办法是装OS_ACTIVITY_MODE : disable如下图:

 

第一步:

宗教活动 7

第二步:

宗教活动 8

 

第三步:

添加参数:

Name :OS_ACTIVITY_MODE 

Value :  disable

宗教活动 9

 
“人烟寒橘柚,秋色老梧桐。谁念北楼上,临风怀敬言。”九月凡是一个难言的随时,相逢又得离别。寥寥数天之时光被,一丛丛有点迷彩,一点点可怜迷彩在当时钟林毓秀的校园中划下了无法抹去的痕迹。

当开发者,如何适配iOS10吗?

8.iOS 10 UITextContentType

// The textContentType property is to provide the keyboard with extra information about the semantic intent of the text document.@property(nonatomic,copy) UITextContentType textContentType NS_AVAILABLE_IOS(10_0); // default is nil

在iOS 10
UITextField添加了textContentType枚举,指示文本输入区域所盼之语义意义。

动此属性可以吃键盘和体系信息,关于用户输入的始末之预期的语义意义。例如,您得指定一个文书字段,用户填写收到一模一样封电子邮件确认uitextcontenttypeemailaddress。当你提供关于您希望用户在文书输入区域受到输入的情节的信经常,系统可以当某些情况下自行选择适宜的键盘,并增强键盘修正和主动与其余文件输入会的构成。

6.iOS 10 UICollectionView 性能优化

随着开发者对UICollectionView的深信,项目遭到因故的地方吗比多,但是要在一些题目,比如偶尔会卡顿、加载慢等。所以iOS
10 对UICollectionView进一步的优化。

  • UICollectionView cell pre-fetching预加载机制
  • UICollectionView and UITableView prefetchDataSource 新增的API
  • 针对self-sizing cells 的改进
  • Interactive reordering

  以iOS 10
之前,UICollectionView上面如果生恢宏cell,当用户活动快速的时候,整个UICollectionView的卡顿会见格外肯定,为什么会招致如此的题材,这里涉及到了iOS
系统的选定机制,当cell准备加载进屏幕的当儿,整个cell都早就加载成功,等待在屏幕外了,也尽管是整一行cell都曾加载了,这虽是招卡顿的严重性原因,专业术语叫做:掉帧.
倘惦记让用户发不至卡顿,我们的app必须帧率达到60帧/秒,也就是说每帧16毫秒要刷新一次.

2016年9月7日,苹果宣布iOS 10。2016年9月14日,全新的操作系统iOS
10以正式达成线。

1.Notification(通知)

自从Notification受引入之后,苹果就是连发的更新优化,但这些更新优化只是小打小闹,直至现在iOS
10发端确实的进展大改重构,这叫开发者也体会到UserNotifications的易用,功能吗移得不行强大。

  • iOS 9 以前的打招呼

    1.于调用方法时,有些措施为人不胜麻烦分,容易写错方法,这为开发者有时候很苦恼。

    2.使在运作时同免运行时捕获通知的路还无等同。

    3.用到在前台时,是无力回天直接展示远程通知,还亟需更处理。

    4.曾经来的通知是免能够更新的,内容来时是不可知改变的,并且只有简单文本展示方式,扩展性根本不是非常好。

  • iOS 10 开始之打招呼

    1.具有相关通知被合并到了UserNotifications.framework框架中。

    2.充实了注销、更新、中途还足以改通知之始末。

    3.通知非以是概括的文书了,可以参加视频、图片,自定义通知之显得等等。

    4.iOS
    10针锋相对之前的通来说更是好用易于管理,并且开展了大规模优化,对于开发者来说是平项好事。

    5.iOS
    10方始于权力问题开展了优化,申请权限就比较简单了(本地及长途通知并以一个法被)。

    如果用了推送宗教活动,修改要图:

   宗教活动 10

   

2.ATS的问题

iOS
9中默认非HTTS的大网是深受禁止的,当然我们也得将NSAllowsArbitraryLoads设置为YES禁用ATS。不过iOS
10起2017年1月1日自从苹果不允我们由此者办法跳了ATS,也就是说强制我们因此HTTPS,如果无这样的话提交App可能会见让驳回。但是咱得以经过NSExceptionDomains来针对特定的域名开放HTTP可好通过审批。

NSExceptionDomains方式 设置域。可以省略明了成,把非支持https协议的接口设置成http的接口。

具体方法:

1)、在路的info.plist中上加一个Key:App Transport Security
Settings,类型为字典类型。

2)、然后叫她上加一个Exception Domains,类型为字典类型;

3)、把要的支持的域添加給Exception
Domains。其中域作为Key,类型也字典类型。

4)、每个地区下面用设置3单特性:NSIncludesSubdomains、NSExceptionRequiresForwardSecrecy、NSExceptionAllowsInsecureHTTPLoads。

如图:

宗教活动 11

5.iOS 10 UIStatusBar方法过期:

宗教活动 12

 

在我们出被来或就此到UIStatusBar部分属性,在iOS 10
中这些艺术就晚点了,如果你的品种中有效之说话就是得需要适配。

地方的图样也能窥见,如果以iOS
10面临你得以preferredStatusBar依照这样:

//iOS 10 - (UIStatusBarStyle)preferredStatusBarStyle {    return UIStatusBarStyleDefault;
}

14.Xcode 8施用Xib awakeFromNib的警告问题

Xcode 8事先我们使用Xib初始化- (void)awakeFromNib {}都是如此写啊从未什么问题,但是以Xcode 8会产生如下警告:

宗教活动 13

官方解释:
You must call the super implementation of awakeFromNib to give parent classes the opportunity to perform any additional initialization they require.
Although the default implementation of this method does nothing, many UIKit classes provide non-empty implementations. 
You may call the super implementation at any point during your own awakeFromNib method.


你必须调用父类实现awakeFromNib来给父类来执行它们需要的任何额外的初始化的机会。
虽然这种方法的默认实现不做任何事情,许多UIKit类提供非空的实现。
你可以调用自己的awakeFromNib方法中的任何时候超级实现。

 

13.iOS 10开头项目被部分文字显示不全问题

我用Xcode 8Xcode 7.3各自测试了下,如下图:

宗教活动 14

Xcode 8

Xcode7 

创建一个Label然后让它自适应大小,字体大小都是17最后输出的宽度是不一样的,我们再看一下,
下面的数据就知道为什么升级iOS 10 之后App中有的文字显示不全了:



英文字母会不会也有这种问题,我又通过测试,后来发现英文字母没有问题,只有汉字有问题。
目前只有一个一个修改控件解决这个问题,暂时没有其他好办法来解决。

3.iOS 10 隐私权限设置

iOS 10 开始针对隐私权限更加严峻,如果您无装就会直接倒,现在众相遇崩溃问题了,一般解决办法都是当info.plist文件添加对应之KeyValue不畏可以了。

宗教活动 15

 

以上Value价值,圈出之红线部分的文是展示给用户看之,必须抬高。

发表评论

电子邮件地址不会被公开。 必填项已用*标注