Swift
文章平均质量分 68
项目中使用Swift遇到的各种问题,包括Swift常用功能
wenbin·
勤能补拙
展开
-
「iOS」Dark Mode 实现方案
Dark Mode 在iOS 13出现,已经两年了,没有做适配的同学,可以参考本文章,实现切换方案⚠️注意:Dark Mode 从iOS13开始才有,所以需要展示的地方需要增加判断 if #available(iOS 13.0, *)????下面开始具体讲述方案步骤:一、实现要点概述通过 Notification 进行传参使用 UserDefault 或 MMKV 等存储当前选择的模式配置 颜色 的自动切换最终的切换操作都在 AppDelegate 中做处理二、实现步骤1. 配置原创 2021-03-05 11:13:03 · 483 阅读 · 2 评论 -
「iOS」UITableView.Style.insetGrouped样式 及 代码实现圆角cell 方案
网上很少搜到 insetGrouped 的样式和用法,结合自己的项目,大概阐述一下用法,最下方包含自己实现的源码升级iOS版本后,细心的小伙伴发现了自带的 备忘录 app的列表样式发生了更改,圆角cell算是现在比较新潮的设计,本文主要讲一下系统的实现方案和自己用代码的实现方案。一、系统实现方案1. insetGrouped用法很简单,用 xib 或代码方式初始化tableView时选择Style为 insetGrouped ,样式如下:⚠️注意点:必须选择 insetGrouped 样.原创 2021-03-04 17:32:46 · 3359 阅读 · 1 评论 -
「iOS & Android」WebView获取图片、点击图片
获取思路:注入JS代码获取 ‘img’ 图片,拼接成字符串返回,然后分割字符串得到每个图片的url注入JS代码获取图片的点击事件iOSiOS使用WKWebView// MARK:- WKNavigationDelegatefunc webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) { // 注入JS代码获取图片url和个数 self.webView.evaluateJavaScript(""".原创 2020-11-12 14:40:44 · 603 阅读 · 0 评论 -
「Swift」常用框架汇总 (持续更新~)
日期、日历相关DateScrollPickerHorizonCalendarCVCalendarJTAppleCalendarEmptyView占位图TBEmptyDataSetEmptyDataSet-SwiftHGPlaceholdersSkeletonView 正在加载时占位图动画Popover弹框选择McPickerPopoverEasyTipViewInstructions##导航栏管理和样式StylableNavigationBarTabBar管理和样式PTC原创 2020-11-05 16:30:40 · 3652 阅读 · 0 评论 -
【Swift】WKWebView获取选中文本
使用WKWebView时选中文本弹出UIMenuController,在开发中会自定义menu,但是自定义的menu无法通过系统api获取到选中文本,并且WKWebView抛弃了UIWebView的 stringByEvaluatingJavaScriptFromString 方法,只用一行代码就能实现。解决方案在自定义menu的action实现里进行操作self.webView.evaluateJavaScript("window.getSelection().toString()") { (res原创 2020-07-22 09:42:29 · 799 阅读 · 0 评论 -
Xcode自动配置证书管理配置文件的Devices
项目使用自动配置时自动生成的配置文件在开发者网站上是看不见的,需要内测添加设备时不方便,本文有个简便的方法一分钟搞定!第一步获取到设备的udid,我这里用的是蒲公英平台第二步打开Apple Developer官网导入设备第三步打开Xcode -> target -> Signing&Capability -> Provision Profile -> 点击右边的感叹号在弹出页面的左上角拖动图标到桌面,复制文件的全名(包括后缀)打开 Finder,cmd+.原创 2020-07-10 11:03:44 · 1653 阅读 · 0 评论 -
Swift 查看项目代码行数
终端cd到工程目录下,如果想看除了Pod以外的代码行数,就再cd到自己的项目文件夹内,在终端输入:find . -name "*.swift" -or -name "*.xib" | xargs grep -v "^$" | wc -l这是除去空行的代码行数,如果想统计包括空行的把 grep -v "^$" | 删除同理,想统计OC代码就把name里的替换...原创 2020-07-02 11:30:29 · 485 阅读 · 0 评论 -
iOS 12 使用UISearchController点击搜索框崩溃 _searchController]: unrecognized selector sent to instance
在项目中使用了UISearchController,设置导航栏的titleView为searchBar,无意中发现在iOS11和iOS12点击搜索框会崩溃。崩溃原因报 unrecognized selector sent to instance 错的原因一般是对象被提前释放,但是我查了控制器所有的引用,没有发现提前释放,并且这报的错是searchController,所以我查了代码,发现一点可疑的地方:// 需要设置searchTextField的样式和监听方法的地方,iOS13以下使用KVO取到.原创 2020-07-02 09:27:25 · 831 阅读 · 0 评论 -
[Swift5] Swift 设置自定义预编译宏
在开发中经常用 target 区分正式、测试环境,用到自定义的预编译宏来判断,OC中可以在 target 的 Preprocessor Macros 里设置,Swift 则不同。Swift设置预编译宏本文以自定义 TEST 为例选中 target —> Build Settings —> 搜索 Swift Compiler - Custom Flags展开 Active Compilation Conditions 进行设置,只能这样写:TEST, 不能像OC一样设置TEST=.原创 2020-05-29 16:27:30 · 1372 阅读 · 0 评论 -
[Swift5]自定义UITableViewCell左滑操作,适配iOS11 ~ iOS13
tableView左滑是开发中常见的操作方式,之前一直用 MGSwipeTableCell如果您有以下问题:iOS11下自定义按钮图片不显示iOS12下图片为白色,改不了颜色想用系统原生的方案解决问题那您就继续往下看iOS 11 新增了两个方法,个人觉得比原先的方法好用多了,不用手动控制 tableView 的 edit,当滑动时会自动开启// Swipe actions// These methods supersede -editActionsForRowAtIndexPath:.原创 2020-05-21 16:56:40 · 1254 阅读 · 0 评论 -
[Swfit 5] 设置UITableViewCell和Section的圆角和边距
此文是按照原文整理直接拷贝代码使用原文出处原文出处此方法针对没有头尾的情况,如果带有头尾请查看原作者另一篇文章带有头尾的section圆角开发中常用到cell两边带有边距和圆角,如果section里有多个cell,直接设置圆角会出问题,此文把两种情况总结为一个方法,在 cellForRow 或 willDisplayCell 方法里直接调用即可private func setCornerRadiusForSectionCell(cell: UITableViewCell, indexPath:.原创 2020-05-19 16:58:39 · 968 阅读 · 0 评论 -
[Swift5]UISearchController的searchBar导致导航栏高度变化
久闻UISearchController的bug奇多,没想多也被我碰上了发现问题把 UISearchController 的 searchBar 赋值到控制器A的导航栏的titleView上,在push到控制器B时view往下移动了11,在pop回来的时候控制器A的view又往上移动了11,查了文档,iOS11以后就改动了,但是官方也没说解决办法…网上的办法设置searchBar时使用navigationItem.titleView = searchBar ❌searchVC.search.原创 2020-05-14 13:48:55 · 910 阅读 · 0 评论 -
【已解决】Swift 隐藏tabBar后下方的button不可点击
项目中用到UISearchController,点击后需要显示SearchResultController,并且把tabBar隐藏,做完后发现即使tabBar隐藏了,原先位置下的button不可点击。网上的帖子都在复制粘贴,实在是效率太低,并且没什么作用,所以只能自己琢磨了。嫌麻烦的兄弟可以直接看下方的 解决办法前言网上隐藏tabBar的方法大致总结为:修改frame、移动位置、设置alpha和直接设置hidden,这些方法都可以隐藏,但是都不可点击下方的控件。发现问题而不可点击控件的原因大致.原创 2020-05-13 09:57:06 · 493 阅读 · 0 评论 -
UISearchController 基本配置 2020年配置iOS13 以及 DarkMode
Apple提供的UISearchController提供了方便的使用,但是设置一些属性和UI样式时很头疼,本文总结了部分配置供大家参考。初始化// 如果设置 searchResultsController 为nil,则搜索结果和历史记录等信息在当前页面处理,推荐传入一个自定义的Controller,可以方便解耦let searchVC = WBSearchViewController(searchResultsController: mySearchResultController设置代理/.原创 2020-05-12 11:49:51 · 398 阅读 · 0 评论 -
Swift5 访问限制关键字
访问控制关键字限制从高到低排列privatefileprivateinternalpublicopen简单总结:private 只能在当前文件的当前模块的作用域使用fileprivate 只能在当前文件内使用internal 是默认访问级别,所有没有单独列出的都是这个权限public 可以在外部文件访问,如果只需要访问就用它open 可以在外部文件访问,如果需要继承...原创 2019-06-13 15:03:40 · 671 阅读 · 0 评论