IOS9适配 MARK

最近做了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>

参考资料:

https://developer.apple.com/library/prerelease/ios/releasenotes/General/WhatsNewIniOS/Articles/iOS9.html#//apple_ref/doc/uid/TP40016198-DontLinkElementID_13

二、消除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,第二个用来计算行数。

参考链接:http://stackoverflow.com/questions/25398312/automatic-preferred-max-layout-width-is-not-available-on-ios-versions-prior-to-8

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

参考链接:http://stackoverflow.com/questions/32630967/warning-when-i-update-to-xcode-7/32658881#32658881

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"

参考链接:http://stackoverflow.com/questions/10945859/plain-style-unsupported-in-a-navigation-item-warning-with-my-customized-bar-bu

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

  这个简单,布局报黄,更新布局即可,可设置快捷键。。。

时间: 2024-11-04 10:03:59

IOS9适配 MARK的相关文章

&lt;转载&gt;关于iOS9适配中的坑

作者:董铂然 授权本站转载. 本文主要是说一些iOS9适配中出现的坑,如果只是要单纯的了解iOS9新特性可以看瞄神的开发者所需要知道的 iOS 9 SDK 新特性.9月17日凌晨,苹果给用户推送了iOS9正式版,随着有用户陆续升级iOS9,也就逐渐的衍生出了一系列的问题,笔者也在赶忙为自己维护的App做适配,本文写的一些坑基本都是亲身体验了. 一.NSAppTransportSecurity iOS9让所有的HTTP默认使用了HTTPS,原来的HTTP协议传输都改成TLS1.2协议进行传输.直接

iOS9适配

前言 本文主要是说一些iOS9适配中出现的坑,如果只是要单纯的了解iOS9新特性可以看瞄神的开发者所需要知道的 iOS 9 SDK新特性.9月17日凌晨,苹果给用户推送了iOS9正式版,随着有用户陆续升级iOS9,也就逐渐的衍生出了一系列的问题,笔者也在赶忙为自己维护的App做适配,本文写的一些坑基本都是亲身体验了. 兼容HTTP 一.NSAppTransportSecurity iOS9让所有的HTTP默认使用了HTTPS,原来的HTTP协议传输都改成TLS1.2协议进行传输.直接造成的情况就

整理iOS9适配

整理iOS9适配 本文主要是说一些iOS9适配中出现的坑,如果只是要单纯的了解iOS9新特性可以看瞄神的开发者所需要知道的 iOS 9 SDK 新特性.9月17日凌晨,苹果给用户推送了iOS9正式版,随着有用户陆续升级iOS9,也就逐渐的衍生出了一系列的问题,笔者也在赶忙为自己维护的App做适配,本文写的一些坑基本都是亲身体验了. 一.NSAppTransportSecurity iOS9让所有的HTTP默认使用了HTTPS,原来的HTTP协议传输都改成TLS1.2协议进行传输.直接造成的情况就

iOS开发——适配篇&amp;iOS9适配

iOS9适配 1. Demo1_iOS9网络适配_ATS:改用更安全的HTTPS [摘要]iOS9把所有的http请求都改为https了:iOS9系统发送的网络请求将统一使用TLS 1.2 SSL.采用TLS 1.2 协议,目的是强制增强数据访问安全,而且 系统 Foundation 框架下的相关网络请求,将不再默认使用 Http 等不安全的网络协议,而默认采用 TLS 1.2.服务器因此需要更新,以解析相关数据.如不更新,可通过在 Info.plist 中声明,倒退回不安全的网络请求.而这一做

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

本文主要是说一些iOS9适配中出现的坑,如果只是要单纯的了解iOS9新特性可以看瞄神的开发者所需要知道的 iOS 9 SDK 新特性.9月17日凌晨,苹果给用户推送了iOS9正式版,随着有用户陆续升级iOS9,也就逐渐的衍生出了一系列的问题,笔者也在赶忙为自己维护的App做适配,本文写的一些坑基本都是亲身体验了. 一.NSAppTransportSecurity iOS9让所有的HTTP默认使用了HTTPS,原来的HTTP协议传输都改成TLS1.2协议进行传输.直接造成的情况就是App发请求的时

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

本文主要是说一些iOS9适配中出现的坑,如果只是要单纯的了解iOS9新特性可以看瞄神的开发者所需要知道的 iOS 9 SDK 新特性.9月17日凌晨,苹果给用户推送了iOS9正式版,随着有用户陆续升级iOS9,也就逐渐的衍生出了一系列的问题,笔者也在赶忙为自己维护的App做适配,本文写的一些坑基本都是亲身体验了. 一.NSAppTransportSecurity iOS9让所有的HTTP默认使用了HTTPS,原来的HTTP协议传输都改成TLS1.2协议进行传输.直接造成的情况就是App发请求的时

iOS9适配总结

每年iOS升级,都会带来一些坑,这次iOS9也不例外.本文总结了微信在适配iOS9上遇到的问题和解决方案. 一.iOS9问题汇总   1. 编译问题(Bitcode) 大部分人升级到Xcode7后,首先遇到的问题是编译不过,错误提示大致是 xxx does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library f

iOS9适配小结

前言 最新公布的app版本号适配了iOS9.总结一下适配过程的几个要点. Bitcode iOS9此番推出了新的特性:Bitcode,关于Bitcode的资料大家能够在网上找.Bitcode要求project中使用的第三方库必须支持Bitcode,因为非常多第三方库都仅仅提供简单的.a和头文件,无法自行对这些库进行重编译. 一个简单的处理Bitcode的办法就是临时关闭对Bitcode的支持.在Xcode7.0Beta版中打开project的Build Setting,将Enable Bitco

iOS9适配系列教程

链接地址:http://www.open-open.com/lib/view/open1443194127763.html 中文快速导航: iOS9网络适配_ATS:改用更安全的HTTPS(见Demo1) WHAT(什么是SSL/TLS?跟HTTP和HTTPS有什么关系) WHY(以前的HTTP不是也能用吗?为什么要用SSL/TLS?Apple是不是又在反人类?) HOW(如何适配?---弱弱地问下:加班要多久?) 第1种情况:HTTPS Only (只有HTTPS,所有情况下都使用ATS) 第