Updated on 五月 9, 2019
iOS开发踩坑记录
开屏页无法显示图片问题
LaunchScreen.storyboard设置Assets.xcassets里的图片无法显示。解决办法是把图片放到外面,工程目录下建个文件夹,把图片放里,而不是在Assets.xcassets里。
后来发现其实不是这个问题,把图片放在外面有时候也会不显示。重启手机再重新build安装就会显示。无论是放在Assets.xcassets里还是外面,都会显示。不知道是否和auto layout有关,把UIImageView设为水平居中、竖直居中、距上边距0、左边距0。
开屏页国际化问题
对LaunchScreen.storyboard国际化似乎不起作用,对LaunchScreen里显示的图片做国际化,似乎也没起作用。解决办法是创建需要本地化的LaunchScreen.storyboard,命名为LaunchScreenZhCN.stroyboard。修改InfoPlist.strings,对UILaunchStoryboardName国际化,值为对应的LaunchScreen名。
但是运行过程中发现,开屏页确实本地化了,但是切换语言,开屏页并没有变化。网上找到的解答是:
启动页只会保留一份, 也就是说, 你第一次加载完以后, 切换了语言, 再重新打开App, 它的启动页不会跟着更新的。 这也符合苹果的用户交互指引。
也就是说,开屏页的语言为安装APP时系统语言,其后更改系统语言也不会改变开屏页,除非重新安装。
参考:
https://www.jianshu.com/p/605978f28629
http://blog.hudongdong.com/ios/559.html
国际化思维导图
![](http://zhuqiaochu.truestudio.tech/wp-content/uploads/2019/05/iOS国际化思维导图.png)
WKWebView使用问题
在storyboard里使用WKWebView会报错,提示Class Unavailable: WKWebView before iOS 11.0 (NSCoding support was broken in previous versions)
实际上在iOS8.0就开始支持WKWebView了,那为什么还会报错呢?
网上的解答是:
Although WKWebView was introduced in iOS 8, there was a bug in
-[WKWebView initWithCoder:]
that was only fixed in iOS 11, which always crashed at runtime and thus prevented configuring one within Interface Builder.
意思好像是虽然从iOS8开始支持,但是有个bug直到iOS11才修复,如果iOS11之前使用Interface Builder创建WKWebView会导致崩溃。
所以解决办法是通过代码创建WKWebView。
import UIKit import WebKit class ViewController: UIViewController, WKUIDelegate { var webView: WKWebView! override func loadView() { super.loadView() let webConfiguration = WKWebViewConfiguration() webView = WKWebView(frame: .zero, configuration: webConfiguration) webView.uiDelegate = self view = webView } override func viewDidLoad() { super.viewDidLoad() let myURL = URL(string: "https://www.apple.com") let myRequest = URLRequest(url: myURL!) webView.load(myRequest) }}
参考:
http支持
编辑info.plist,增加
<key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> <key>NSAllowsArbitraryLoadsInWebContent</key> <true/> </dict>
参考:
https://stackoverflow.com/questions/41557155/wkwebview-how-to-display-links-to-http-pages
https://stackoverflow.com/questions/52258827/ios-wkwebview-doesnt-load-http-web-content