iOS开发月报#11|201905

这里记录过去一个月,我看到的值得分享的内容,包含但不限于iOS知识,每个月的最后一天发布。 欢迎推荐内容,可以前往zhangferry/iOSMonthlyReport提交issue。

Tips

对UISearchBar样式的修改

1、完成一次搜索之后,调用

searchBar.resignFirstResponder()

隐藏键盘,会将 searchBar的取消按钮默认置为disEnable。如果我们需要此时能够监听取消按钮的点击状态,需要恢复其可用状态:

if let cancelButton = searchBar.value(forKey: "cancelButton") as? UIButton
    cancelButton.isEnabled = true
}

2、修改取消按钮的文案

//修改searchbar的取消按钮文案
searchBar.setValue("delete", forKey: "cancelButtonText")

3、更改取消按钮文案样式

UIBarButtonItem.appearance(whenContainedInInstancesOf: [UISearchBar.self])
            .setTitleTextAttributes([NSAttributedString.Key.font: UIFont.systemFont(ofSize: 15)], for: .normal)

4、更改searchBar文本框文字样式

UITextField.appearance(whenContainedInInstancesOf: [UISearchBar.self])
         .defaultTextAttributes = [NSAttributedString.Key.font: UIFont.systemFont(ofSize: 15)]

上传IAP时出现TCP 443问题

具体错误为:

Communication error. Please use diagnostic mode to check connectivity. You need to have outbound access to TCP port 443.

这是由于代理问题引起的上传错误,上传IAP至App Store Connect不需要代理,关掉代理继续上传就可以了。

上传IAP时出现:WARNING ITMS-90176

完整错误为:

WARNING ITMS-90176: “Unrecognized Locale - The locale names used in localization directories at ( “Payload/sandbox.app/AccountKitStrings.bundle/Resources/cb_IQ.lproj” ) are invalid. iTunes supports BCP47 but not the UN M.49 specification. Refer to the Language and Locale Designations guide at https://developer.apple.com/library/content/documentation/MacOSX/Conceptual/BPInternational/LanguageandLocaleIDs/LanguageandLocaleIDs.html for more information on naming your language-specific directories.”

该错误是由Xcode9不再兼容cb_IQ.lproj这个格式,所以只要一出AccountKitStrings.bundle中的cb_IQ.lproj文件即可。

推荐阅读

Core Image 之自定义 Filter~

非常详细的介绍Core ImageFilter(滤镜)涉及的概念和使用方法。 作者是美图的iOS开发工程师,博客多讲解图像处理相关知识,是iOS图像领域的大牛,推荐关注。

iOS图形处理概论:OpenGL ES,Metal,Core Graphics,Core Image,GPUImage,OpenCV等

对于刚接触iOS图形相关框架的小白,有一些图形框架在字面上和功能上非常容易混淆。这里旨在总结一下各种框架,区分它们的概念和功能,以作日后进一步细分学习的指引。

Swift 5 字符串插值之美

Swift5除了ABI稳定并没有带来很多语法上的变化,你如果以为Swift5只有ABI稳定那你就错了,它还带来了一个很强的特性---字符串插值。一开始我还以为它是一个小特性,但是当我把它和AttributedStrings, sql联系到一块时,我才发现他的强大之处!

还有一篇将字符串插值应用到AttributedStrings上的文章: StringInterpolation in Swift 5 — AttributedStrings

如何选择开源许可证

关于几种常见开源许可证的区别:

Github

Python-100-Days

Python - 100天从新手到大师。 作为一线移动端开发,或多或少都有着一个全栈的目标,而作为后端语言的Python无疑是最佳选择。一个star数多达3w+的Python教学项目,这足以说明Python的受欢迎程度,这份教程的受欢迎程度。

markdown-weixin

一个在线将 Markdown 转换为微信公众帐号文章格式的工具。 http://md.qikqiak.com/

AssetsExtractor

『Assets提取工具』是一款OSX平台上用于将Assets.car或xxx.app中打包的png图片、pdf等资源重新提取出来的开发者工具。Assets.car常见于iOS/Mac/Unity等开发中的资源打包。

awesome-ios-bluetooth

一个收集开发iOS蓝牙功能资料的仓库。从入门必读、蓝牙升级、ANCS、调试工具都有介绍。目前该库由我维护,大家有什么蓝牙相关的问题可以提issue给我。

firefox-ios

火狐浏览器的iOS开源库,由Swift4.2编写。是一个优秀的可供参考学习的开源项目。