iOS 移动开发
文章平均质量分 83
iOS 移动开发常用知识点
Code&Ocean
遨游在编码海洋中。
iOS Developer
展开
-
iOS 紧急通知
紧急通知申请和配置原创 2023-03-21 18:27:07 · 10214 阅读 · 1 评论 -
Swift 使用正则表达式
正则表达式对于字符串的匹配、查找、替换是非常实用的。那在 Swift 中怎么来使用正则表达式了?以及正则表达式初高级使用。原创 2022-04-28 17:41:06 · 3718 阅读 · 0 评论 -
iOS多环境切换
在应用开发中,我们的流程为:开发-测试-预发布-发布 AppStrore所以就会有不同的环境,比如开发环境,测试环境,预发布环境以及正式环境那么就会产生配置不同环境的如下需求。1. 不同环境设置不同 host ,应用图标(可选)2. 能够快速查看环境、版本号、build 号等信息3. 能够配合自动打包原创 2022-04-14 18:10:34 · 7073 阅读 · 1 评论 -
Swift监听网络状态
我们将介绍使用Swift 5在iOS上监控网络连接状态的原生解决方案,以及如何使用Network Link Conditioner。你将会发现要监听设备网络连接状态,大部分都是依赖第三方框架,如Reachability、Alamofire的NetworkReachabilityManager,或建议您创建一个定期尝试提出HTTP请求的实用程序,以确定网络连接状态。我们只需要苹果的Network框架中的NWPathMonitor 即可实现监听。翻译 2022-02-28 18:34:27 · 3655 阅读 · 0 评论 -
UIButton状态探索和自定义
作为 **iOS** 开发者,一提到控件,就不得不提到 `UIButton`,它做为 **iOS** 系统最常用的响应用户点击操作的控件,为我们提供了相当丰富的功能以及可定制性。而我们的日常工作的 80% ~ 90% 做是在与 **UI**打交道,处理控件在用户的不同操作下的不同状态,最简单的,比如用户没有登录时,按钮置灰不可点击,用户点击时出现一个反色效果反馈到用户等等。对常用状态的定义,系统在很早的时候就给出了如果遇到满足的状态怎自定义添加了。转载 2022-02-09 16:38:29 · 1102 阅读 · 0 评论 -
iOS单元测试
是对最小单元(方法、函数)的验证性测试。一般来说,单元测试不需要依赖外部环境、网络环境、数据库环境。原创 2021-12-17 15:15:08 · 3039 阅读 · 0 评论 -
【iOS数据持久化】偏好设置(UserDefaults)
官网文档:NSUserDufaultClass Reference关于偏好设置:AboutPreferences and SettingsUserDefualts是一种便利的,通过key-value的一种持久化方案。常用于存储应用相关的用户设置,自定义个性化设置,首次使用引导等。适合于简单数据小量储存,涉及记住密码和隐私,建议采用keyChain。偏好设置以plist文件形式存储在应用沙盒的Preferences目录下,文件名:bundleId.plist对于 Swift 来说 UserDefua原创 2021-10-15 14:12:11 · 2645 阅读 · 0 评论 -
iOS 定时器使用(Timer 和 CGD)
在程序开发中,我们常常借助定时器完成定时任务,比如短信验证码倒计时、运动计时等具有时间序列概念的操作。最常用的定时方式有Timer 和GCD dispatchTimerTimer的使用Timer 官方文档Timer/NSTimer: 在某个时间间隔之后触发的定时器,向目标对象发送指定的消息。 Timer 的完成往往配合runloop和相应的 mode。初始化创建即添加到当前 runloop通过带 scheduledxxx方法初始化的定时器,创建就会添加到当前 runloop ,且以 defau原创 2021-04-13 17:33:41 · 3242 阅读 · 0 评论 -
Swift Package Manager 库制作
Swift Package Manager 是苹果官方推出的库管理工具。类似 cocoapods。准备事项:一个需要封装的库存放库的远程仓库,如 github、gitee、gitLab等创建Package创建 Package 有2种方式,命令行和 Xcode。一、命令行首先创建包名mkdir SPMTestcd SPMTest创建 package 项目swift package init此时我们已经创建好了一个包项目,只需要双击 Package.swift 文件即可启动 Xc原创 2021-03-08 13:58:31 · 1493 阅读 · 0 评论 -
Swift 获取渐变色颜色值
Swift 获取渐变色颜色值最近需要完成一个字体颜色从白色随着滑动渐变到黑色的效果。所以需要获取颜色渐变值。获取颜色 RGB 值 /// 获取 rgb func colorRGB(_ color: UIColor) -> (r: CGFloat, g: CGFloat, b: CGFloat, a:CGFloat) { var r: CGFloat = 0, g: CGFloat = 0, b: CGFloat = 0, a: CGFloat = 0原创 2021-01-19 16:50:29 · 731 阅读 · 0 评论 -
iPhoneX(刘海屏)适配
iPhoneX(刘海屏)适配在 iOS11的时候,苹果破天荒发布了一款新屏幕样式的手机,俗称刘海屏。世人皆道丑,而后纷纷买之。自此,iOS 开发者们也走向了 iPhoneX系列的适配之旅。区别状态栏,导航栏的改变和底部 Home Indicator的新增 。普通屏幕iPhoneX(刘海屏)系列状态栏高度2044导航栏高度6488tabBar4983(其中有34Home Indicator交互区)导航栏实际内容展示高度还是44,只是状态栏变高。使用原创 2020-11-06 10:53:55 · 1606 阅读 · 0 评论 -
NSCoding 的作用
有时候我们在定义一个模型类的时候,经常要继承NSCoder这个协议,具体它有什么作用了?NSCoding首先是一个协议,类继承它,此类的实例才能被编码(encode)和译码(decode),继承了这个类,也就实现两个方法 1.initWithCoder(NSCoder:coder)//从coder中读取数据,保存到相应的变量中,即反序列化数据2.encodeWithCoder(NSC原创 2015-12-26 10:07:20 · 1787 阅读 · 0 评论 -
iOS 自定义 View
开发中,为了最小模块化和控件复用(其实更多的是系统控件不满足需求时),我们常常需要自定义 View。这就涉及到需要了解 UIView 的生命周期,布局约束周期才能更好的自定义。示例工程基本声命周期一个控件显示在屏幕需要这么一个过程初始化 -> 约束和布局 -> 绘制渲染 -> 销毁对应方法调用(可在示例工程中查看日志输出)init(coder:)/init(frame:) // 【初始化】可视化加载/代码初始化updateConstraints() // 【约束更原创 2020-08-12 15:56:43 · 2575 阅读 · 0 评论 -
利用 CoreGraphics 绘制折线图
效果与元素分析实现效果图如下:首先对折线图进行元素分割包含以下六部分元素渐变背景折线折线上的点折线范围内渐变参考线文本显示的 Label除了6之外,其他几个元素都在 draw(_:)方法中利用 CoreGraphic 进行绘制。绘制背景渐变色主要绘制手段是 利用 UIBezierPath 和 CoreGraphicContext, UIBezerPath 能方便的绘制一些简单的几何图形, 但是 更复杂的绘制还是借助 CGContext 来完成,比如渐变色。利用 UIBezi翻译 2020-08-06 18:00:51 · 872 阅读 · 0 评论 -
iOS的内存分区
iOS中堆栈iOS内存模块一个应用的内存主要分为堆、栈、全局区/静态区、常量区、代码区如下图:【图片】栈(stack)由编译器管理自动释放,如方法内变量,局部变量等值。分配时只要栈的空间大于对象申请的空间,就会提供该段内存,否则报栈溢出。对于一个方法,在方法作用域内形成一个栈帧(stack frame)(包含参数,局部变量,返回值等),执行完方法后,栈帧弹出,里面所有内存销毁。特点...原创 2020-04-21 14:10:11 · 1121 阅读 · 0 评论 -
iOS 获取本地图片URL
有时候我们需要在代码中读取图片的 URL,但是需要注意的是:在 Assets 中的图片,会经过编译无损压缩,无法通过 Path 读取,只能通过 named 方法读取,这种情况我们应该怎么获取图片 URL 了?原创 2020-04-16 18:26:29 · 6495 阅读 · 0 评论 -
【iOS数据持久化】Plist使用
iOS数据持久化Plist使用iOS 端数据持久化就是把数据保存在本地,常用于基本信息储存,应用配置,应用支持数据源,网络请求缓存等。主要有如下几种方式:方式介绍特点Plist文件属性列表(Property List),通过xml的方式保存本质为XML格式Preference(NSUserDefaults)偏好设置,通过key-value存取,一般用于基本用户...原创 2020-03-24 14:55:06 · 480 阅读 · 0 评论 -
iOS 减少编译时间
每次在Xcode中写完代码,我们可能都需要按CMD + B 编译一下,或者直接按CMD + R运行,在某些项目中,等等编译的时间总是特别长,如何能减少编译时间了?原创 2020-03-13 15:43:57 · 1411 阅读 · 1 评论 -
Cocoapods的Podfile使用
Cocoapods的Podfile使用对于第三方库集成,现在最受欢迎的就是基于Ruby语言实现的Cocoapods,可以很方便的管理引入库,当然你也可以使用Swift Package Manager 或者 Carthage。 现在我们来看看有哪些使用姿势。如何创建Podfile创建Podfile文件有很多种方式,最简单的方式应该是打开终端进入项目路径,执行pod init命令,会自动添加ta......原创 2020-03-12 14:37:59 · 7078 阅读 · 0 评论 -
Swfit 常用特性(Attribute)关键字
Swfit 常用特性(Attribute)关键字Swift中的Attribute相当于Java中的注解,但是可惜的是目前Swift不支持自定义AttributeSwfit的特性关键字一般用于声明或者用于类型使用形式 @属性关键字 或者带参数@属性(参数)@availabel@available用来标识 计算属性(不包含储存属性)、函数、类、结构体、枚举等声明周期(依赖特定版本或者Swif...原创 2020-03-04 11:49:17 · 1001 阅读 · 0 评论 -
iOS调试 LLDB使用
我们职责是开发iOS应用,我们要做的就是生产bug和解决bug,调试对于每一个开发人员来说都是亘古不变的操作。如何高效调试提高我们的装X技能了,所以掌握Xcode的LLDB最为重要。LLDB首先瞟一眼LLDB长啥样,如下图:LLDB 是一个有着 REPL 的特性和 C++ 、Python 插件的开源调试器。LLDB命令结构<command> [<subcommand&...原创 2020-02-27 18:04:26 · 410 阅读 · 0 评论 -
正确的理解iOS MVC
对于iOS开发者来说。MVC 模式应该是不默认的,官方推荐的SDK就是按照MVC模式来的。以前的我写MVC代码, 创建Model View Controller, 大量的逻辑代码都写在Controller中,理所当然的认为MVC模式就是创建对应的三个文件。直到看了这篇文章唯一可行的iOS架构,觉得有了一个新的理解。...原创 2020-02-27 10:33:23 · 248 阅读 · 0 评论 -
CocoaPods私有库创建
CocoaPods私有库创建参考链接为什么要使用私有库和私有库索引对于个人来说,可以进行代码积累。我们在创建新项目,很多基础代码会进行复用,都会引入自己常用的代码。还有一些自定义代码,快速代码,等等代码的积累,这些代码你不可能每次都复制粘贴吧,有没有什么方法既能同步,又不公开,还可以随时更新了?对于项目而言,有利于模块化和高复用。可以使用私有库,建立私有索引,在公司项目内部实现模块...原创 2020-01-14 17:39:04 · 161 阅读 · 0 评论 -
如何在Storyboard中使用Scroll view
本文章环境Xcode 11在开始使用scroll view之前(storyboard/XIB),我们必须搞清楚两个东西在Storybord/Xib中使用Scroll view,会有哪些结构为什么会发出“ambiguous scrollabel content width/height”错误提示。scroll view的结构滚动视图工作原理在于可滚动区间大小,就像这样:为了让滚动...翻译 2020-01-13 14:12:12 · 5128 阅读 · 2 评论 -
Swift typealias使用
阅读前了解知识点泛型文档中文版Swift改变日志,搜索关键字typealiastypealiastypealias是指类型别名,将一个已存在的类型别名一个其他名字,比如:// 我经常干的typealias NetParams = [String: Any] /// 网络请求参数// 系统Core Location 的经纬度类型public typealias CLLocation...原创 2020-01-08 11:52:46 · 1180 阅读 · 0 评论 -
Swift 与 Objective-C混编xxx-Swift.h File not found
在iOS 开发中,由于苹果14年发布了Swift语言,具备简单实用、高效等诸多优点,越来越受开发者青睐。另外,由于Objective-C多年发展和稳定性,有很多框架(特别是商业SDK)采用Objective-C,或者之前的老项目使用Swift语言。都需要涉及到混编,才可以实现文件相互识别与引用。Swift中使用Objective-C重点文件:桥接文件如果创建项目选择的是Swfit...原创 2019-12-18 15:25:09 · 5856 阅读 · 0 评论 -
Xcode代码文件模板
通过定义模板提高开发效率原创 2019-12-06 14:38:54 · 1511 阅读 · 0 评论 -
Swift常用库收集
收集一些项目中常用的比较顺手的第三方库, 并不一定是基础的库,只是有时候会用到,免得到时候到处找。UI层 QMUI 腾讯样式统一 UI控件库,统一多端控件,系统控件基础上提高扩展行(比如AlertViewController的自定义), 主题与暗黑模式的配置切换 https://qmuiteam.com/ios CALayer系列实例 CALayer及其子类的示...原创 2019-11-11 15:56:36 · 607 阅读 · 0 评论 -
iOS 图片渲染及优化
下图是一张超美的太空图,如果我的项目中要使用这么一张图片,我该怎么显示和优化了(如何显示和优化大图显示)。图片资源原始网站:在这里假如这张图大小为:52kb图片显示流程1.加载 (数据缓冲区)图片通过网络请求或者本地加载到内存中,也可以称之为数据缓冲区,占用52kb(文件大小)。2.解码(图像缓冲区)解码是将图像转化为CPU能读取和理解的过程,同时将图像创建在图像缓...原创 2019-11-11 11:23:30 · 1878 阅读 · 0 评论 -
如何高性能添加UIView阴影
原文链接:How to add a shadow to a ViewiOS 能够动态的为任何UIView添加阴影,这些阴影是自动适应元素的形状,即使像UILabel这种文本曲线, 阴影功能是内置在UIView中的。你只需要关心和设置他的属性就ok啦有如下常用相关属性(针对UILayer层的):shadowColor: 设置阴影的颜色,必须是CGColor类型的。 shadow...翻译 2019-11-06 17:10:00 · 891 阅读 · 0 评论 -
Instruments--CoreAnimation页面性能调试
Instruments是什么我的理解就是一个调试工具集,常用来调试性能优化,页面优化,fps响应,检查内存性能等。完整介绍与操作【你看】Xcode打开方式:Xcode 11中的Instruments工具集CoreAnimation是什么CoreAnimation主要用于查看视图性能,页面fps,常常用于页面性能优化。CoreAnimation测试选项...原创 2019-11-06 16:02:13 · 2374 阅读 · 1 评论 -
UIBezierPath路径绘图
UIBezierPath路径绘图一.新建一个playground二.新建一个类继承与UIView三.重写类中的drawRect()方法四.定义坐标点(我们这里定义五个点,打算绘制一个五角星)五.生成UIBezierPath类的实例,利用UIBezierPath类下的自定义方法(见上篇)给出绘制出路径,代码及效果如下图:swift源代码如下:...原创 2015-11-22 20:57:09 · 1127 阅读 · 0 评论 -
UIBezierPath使用
UIBezierPath使用贝塞尔曲线作用贝塞尔曲线路径可用来绘制自定义路径,圆,弧度,矩形,单独圆角矩形等UIBerzierPath类介绍初始化方法 /// MARK: - 初始化方法【常规路径】 /// 矩形 public convenience init(rect: CGRect) /// 椭圆 形状依赖于矩形(比如当矩形为正方形的时候为圆...原创 2015-11-22 16:42:31 · 867 阅读 · 0 评论 -
UIGestureRecognizer手势介绍
UIGestureRecognizer手势 : 1-概要介绍一、UIGestureRecognizer类简介UIGestureRecognizer类是一个抽象类,不能直接使用,具体使用过程中需要使用其子类。UIGestureRecognizer一共包括6个子类,分别对应6种手势,即: UITapGestureRecognizer:点击 UIP原创 2016-03-20 11:22:33 · 707 阅读 · 0 评论 -
网页加载报错——URL网页连接错误
当使用web视图控件,或者进行网络编程,需要涉及URL的,在ios9及xcode7之后版本,如果不进行配置,将会在控制台出现以下错误;App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be con原创 2016-04-15 19:14:29 · 3522 阅读 · 0 评论 -
iOS 自动引用计数和内存泄露
Swift的自动引用计数->解决内存泄露在swift中的变量一般分为三种:1、 strong 强引用 默认2、 weak 弱引用 定义时前面加 weak关键字(值可选情况下使用)3、 unowned 无主引用 定义时前面加 unowned关键字(值不变情况下使用)销毁情况 强引用不会自原创 2016-05-24 12:05:29 · 2943 阅读 · 0 评论 -
【iOS数据持久化】归档解档(NSKeyedArchiver/ NSKeyedUnarchiver)
归档和解档一、简介归档(Archive)也称为序列化(serialization),把对象转化为字节码,以文件的形式存储在磁盘上,只要遵循了NSCoding协议的对象都可以实现归档和解档(大部分foundation和Cocoa Touch类都可以),将文档上的字节码转化为对象的过程叫做解档(unarchive)也叫反序列化(unserialization)归档的数据类型要求; NSData、NS...原创 2016-05-03 23:10:20 · 1950 阅读 · 0 评论 -
ios开发学习笔记--Core Motion
iOS开发学习笔记之CoreMotion—运动传感器官网文档:CoreMotion Framework Reference一、 简介现在的苹果手机都基本有运动传感器,能够过获取到设备的加速度及加速度,更方便用户交互,比如说运用在游戏、导航、视屏播放。。。。而且有时候需要判断使用屏幕的方向。提供不同的UI约束iphone传感器种类:a、 加速器(地感器)原创 2016-05-14 16:25:27 · 1528 阅读 · 0 评论 -
【iOS数据持久化】数据库(SQLite.swift)和FMDB
数据持久化之SQLite数据库(SQLite.swift使用)一、简介SQLite是一款轻型的嵌入式数据库,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就足够了。它的处理速度比Mysql、PostgreSQL这两款著名的数据库都还快。SQLite提供的是一些C函数接口,你可以用这些函数操作数据库。通过使用这些接口,传递一些标准sql语句(以char *类型)原创 2016-05-06 15:23:09 · 2620 阅读 · 0 评论 -
UIViewAnimationOptions类型与modalTransitionStyle模态样式
UIViewAnimationOptions类型在页面切换的时候经常会调用一些含有动画类型参数的函数。转载:http://blog.sina.com.cn/s/blog_8d1bc23f0102vqs1.html以下是动画UIViewAnimationOptions类型:一个非常强大的博客 http://www.cnblogs.com/kenshincui/ 像转载 2016-10-12 14:50:49 · 1602 阅读 · 0 评论