最近做了iOS 9的适配,程序出现大量警告也做了些处理,写出来分先给大家。

一、iOS 9适配

问题一:

<Error>: CGContextSaveGState: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.  

出错原因:设置app的状态栏样式的使用使用了旧的方式,在info.plist里面设置了View controller-based status bar appearance为NO,默认为YES,一般式iOS6的时候使用这种方式,iOS7,8也兼容,但是到了iOS9就报了警告。以前我们使用代码为[[UIApplication sharedApplication]setStatusBarStyle:UIStatusBarStyleLightContent];以前我们通过上面代码改变状态了颜色
 
解决办法::
  1.删除 原先的设置代码[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
  2.修改方式将View controller-based status bar appearance设置为YES,然后使用新的方式来实现状态栏的样式。
  3.如果你是用UINavigationController只需要在appdelegate里面添加 [[UINavigationBar appearance] setBarStyle:UIBarStyleBlack]就行。

问题二:

-canOpenURL: failed for URL: "weixin://app/wx9c8771d3c07dfd30/" - error: "This app is not allowed to query for scheme weixin"

解决办法:

  info.plist加入
  <key>LSApplicationQueriesSchemes</key>
  <array>
  <string>urlscheme1</string>
  <string>urlscheme2</string>
  <string>urlscheme3</string>
  <string>urlscheme4</string>
  </array>
问题三:
  Bitcode问题
  原因:Xcode7 及以上版本会默认开启 bitcode 。。
解决方法:
  1.更新library使包含Bitcode,否则会出现以上的警告。
  2.关闭Bitcode,Build Settings”->”Enable Bitcode”改成"NO"
问题四:
App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app‘s Info.plist file.

在iOS9中,将原http协议改成了https协议,使用 TLS1.2 SSL加密请求数据。
解决方法:
在info.plist 加入key
<key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict>
二、消除warning
warning 1
  warning :no rule to process file ’…/BBCommmunityVerify.h’ of type sourcecode.c.h for architecture arm64
  解决办法:

  可以看出是某个.h文件出了问题,在Build Phases -> Compile Sources 里面删除该文件即可
 
warning 2:
  warning:Automatic Preferred Max Layout Width before iOS 8.0
  出现条件:
  the warning will appear if

  (1) you're using auto layout,
  (2) "Automatic" is set for a multiline label [you can check this in the size inspector for the label], and
  (3) your deployment target < iOS 8.
  上面的意思是警告出现的三个条件
  1.使用自动布局
  2.label多行且设置为.Automatic
  3.版本低于iOS 8.
 解决办法:
1 - (void)layoutSubviews {
2 [super layoutSubviews];
3 CGFloat availableLabelWidth = self.label.frame.size.width;
self.label.preferredMaxLayoutWidth = availableLabelWidth;
4 [super layoutSubviews];
5 }

The first call to [super layoutSubviews] will evaluate the constraints on the label (since it’s a direct subview) and change its frame accordingly. At this point the width is useful, but the height is not; the height was set using the label’s intrinsic content size, which in turn relied on a preferred max layout width value that is now stale.

Now we know the actual width of the label, we set that as its max layout width. Internally, this causes the label to invalidate its intrinsic content size; when it’s next queried, it will have the accurate height for its current width. With all layout information in place, we call[super layoutSubviews] again.
大概意思是第一个[super layoutSubviews]; 获得width,然后设置self.label.preferredMaxLayoutWidth,第二个用来计算行数。
 
warning 3:
  directory not found for option ‘-F/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator9.0.sdk/Developer/Library/Frameworks'
 

去掉警告的办法如下:
1选择工程, 编译的 (targets)
2选择 Build Settings 菜单
3查找 Library Search Paths 和 Framework Search Paths,-L 找Library Search Paths,-F找Framework Search Paths 删掉编译报warning的路径即OK
 
warning 4:
  warning: Plain Style unsupported in a Navigation Item
解决办法:

  1.找到文件,open as source code 搜索 style=“plain" 
  2.修改<barButtonItem key="rightBarButtonItem" style="plain" id="juB-DL-F9i">
  为<barButtonItem key="rightBarButtonItem" id="juB-DL-F9i">
  也就是删除style=“plain"
 
warning 5
  warning:Scene is unreachable due to lack of entry points and does not have an identifier for runtime access via -instantiateViewControllerWithIdentifier:
错误原因: storyboard中存在无法获得的控制器。既不是initial控制器,也没有idenifier;
解决办法:没用就删除,有用的话添加identifier;
 
warning 6:

  warning:Frame for “Phone Text Filed” will be  different at run time 
  这个简单,布局报黄,更新布局即可,可设置快捷键。。。

IOS9适配 MARK的更多相关文章

  1. 整理iOS9适配中出现的坑(图文)

    原文: http://www.cnblogs.com/dsxniubility/p/4821184.html 整理iOS9适配中出现的坑(图文)   本文主要是说一些iOS9适配中出现的坑,如果只是要 ...

  2. fir.im Weekly - iOS9 适配开发教程

    期待已久的 iOS 9 发布了,很多人更新完毕得出结论:这是值得升级的版本.随之而来的是适应 iOS9 开发技术.本期 Weekly 收集了一些关于 iOS9 相关的开发资源,希望对你有帮助. iOS ...

  3. iOS9 适配

    iOS适配的相关内容的整理 之前iOS开发者一直很庆幸自己不用像安卓开发者那样适配各种不同类型的机型,但如今随着iPhone各种机型的改变,适配也成了我们开发中必须会的内容了.首先我们来了解一下对于不 ...

  4. 整理iOS9适配

    整理iOS9适配 本文主要是说一些iOS9适配中出现的坑,如果只是要单纯的了解iOS9新特性可以看瞄神的开发者所需要知道的 iOS 9 SDK 新特性.9月17日凌晨,苹果给用户推送了iOS9正式版, ...

  5. iOS开发——适配篇&iOS9适配

    iOS9适配 1. Demo1_iOS9网络适配_ATS:改用更安全的HTTPS [摘要]iOS9把所有的http请求都改为https了:iOS9系统发送的网络请求将统一使用TLS 1.2 SSL.采 ...

  6. iOS9适配中出现的一些常见问题

    本文主要是说一些iOS9适配中出现的坑,如果只是要单纯的了解iOS9新特性可以看瞄神的开发者所需要知道的 iOS 9 SDK 新特性.9月17日凌晨,苹果给用户推送了iOS9正式版,随着有用户陆续升级 ...

  7. 【转】iOS9适配

    Demo1_iOS9网络适配_改用更安全的HTTPS iOS9把所有的http请求都改为https了:iOS9系统发送的网络请求将统一使用TLS 1.2 SSL.采用TLS 1.2 协议,目的是 强制 ...

  8. ios9适配系列教程——ios9新变化

    Demo1_iOS9网络适配_改用更安全的HTTPS iOS9把所有的http请求都改为https了:iOS9系统发送的网络请求将统一使用TLS 1.2 SSL.采用TLS 1.2 协议,目的是 强制 ...

  9. iOS9适配

    一.App Transport Security xcode7安装后,你会发现ios9之后后默认所有http请求都无法继续有效,但是基于现状,我们并不能这么快改成https请求,所以基本上大多数app ...

随机推荐

  1. XPath语法 在C#中使用XPath示例 【转http://www.cnblogs.com/yukaizhao/archive/2011/07/25/xpath.html】非常详细的文章

    XPath语法 在C#中使用XPath示例   XPath可以快速定位到Xml中的节点或者属性.XPath语法很简单,但是强大够用,它也是使用xslt的基础知识. 示例Xml: <?xml ve ...

  2. TCP与UDP

    TCP(Transmission Control Protocol,传输控制协议)是面向连接的协议:可靠.保证正确性:顺序到达:流量控制.拥塞控制:重传机制.窗口机制:对系统资源.时间要求多:流模式S ...

  3. jsp基础知识(基本的语法及原理)

    jsp 语法分为三种不同的类型: (1) 编译器指令: 类如: <%@ page import="java.io.*"%> (2) 脚本语法: 指定的是java代码: ...

  4. hdu---(1280)前m大的数(计数排序)

    前m大的数 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submi ...

  5. 批量Load/Store指令的寻址方式

    批量Load/Store指令用于实现在一组寄存器和一块连续的内存单元之间传输数据.也称为多寄存器寻址方式,即一条指令可以完成多个寄存器值的传送.这种寻址方式可以用一条指令最多完成传送16个通用寄存器的 ...

  6. iOS控制器瘦身-面向超类编程

    今天写这篇文章的目的,是提供一种思路,来帮助大家解决控制器非常臃肿的问题,对控制器瘦身. 滴滴 老司机要开车了 如果手边有项目,不妨打开工程看一下你的控制器代码有多少行,是不是非常多?再看一下tabl ...

  7. 超详细的Xcode代码格式化教程,可自定义样式。

    超详细的Xcode代码格式化教程,可自定义样式. 为什么要格式化代码 当团队内有多人开发的时候,每个人写的代码格式都有自己的喜好,也可能会忙着写代码而忽略了格式的问题.在之前,我们可能会写完代码后,再 ...

  8. 创建PO

    FORM FRM_CREATE_PO USING P_POSNR CHANGING P_EBELN. DATA: LV_VENDOR TYPE LIFNR, LV_ITEM TYPE EBELP, L ...

  9. [转]Java程序员们最常犯的10个错误

    1.将数组转化为列表 将数组转化为一个列表时,程序员们经常这样做: List<String> list = Arrays.asList(arr); Arrays.asList()会返回一个 ...

  10. BZOJ2280 [Poi2011]Plot

    恩..这题真是sxbk 我们先二分答案,然后判断答案是否满足要求 判断方法是二分当前段的长度一直做到底,当然我们可以用倍增这样快一点,直接随机增量就可以了 然后就是卡常..... 然后就是卡精度QAQ ...