iOS9适配+warning消除

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

1、iOS 9适配html

问题一:ios

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

出错缘由:设置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]就行。

问题二:app

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

解决办法:布局

  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>
2、消除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.ui

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 
  这个简单,布局报黄,更新布局便可,可设置快捷键。。。
相关文章
相关标签/搜索