- 博客(133)
- 资源 (3)
- 收藏
- 关注
原创 iOS-Siri唤起银行类app (语音转账)
前言最近公司App要实现下图这样一个功能,对iPhone手机喊 " 嘿,Siri,余额 ”或者 " 嘿,Siri,转账 ” 出现下面的列表,结果列表中展示我们的APP。列表.png百度了很久,没有找到这个是什么功能,有大佬指点我到官网查询一下,通过查阅发现官网有一个这样的文档 Adding User Interactivity with Siri Shortcuts and t...
2022-10-30 13:41:12
1318
原创 iOS-真机调试——Unable to install "XXXDemo"
image.png此类问题网上有很多解答,但是这些答案都没有解决我的问题,记录一下我解决的方案。引起这个问题,大概有如下原因 :1.证书选择错误、检查证书是否选择正确;请检查工程targets-build Phases-Embed frameworks 下面第三方库有没有勾选Code sign on copy,因为有些第三方库需要用到证书;3.添加依赖库后把Embed改成...
2022-10-29 22:23:58
1414
原创 iOS-UIAccessibility旁白适配
近期在处理App适配VoiceOver(旁白)功能,简单的系统控件苹果都能很好的识别,但在复杂界面处理遇到了一些问题,VoiceOver问题可参考的资料不多,把自己踩过的坑记录如下。首先介绍下 旁白常用的手势:轻点:选择并朗读项目。左右轻扫:选择下一项或上一项。双指轻点三下:打开“项目选取器”。三指上下轻扫:一次滚动一页。三指左右轻扫:前往下一页或上一页(例如,在主屏幕上中)。四指...
2022-08-13 13:15:08
1748
原创 iOS-打包报IPA processing failed错误
XCode 13 打包报错:IPA processing failed,这是我们项目中遇到的问题,通过Xcode直接在手机上Run,是可以正常运行的,但是导出IPA包的时候一直提示报错,网上查阅了一番资料,基本就以下几个方案:拼手速方案:https://blog.youkuaiyun.com/zgpeace/article/details/104693812Rosetta方案:https://blog....
2022-04-28 12:53:35
405
原创 iOS-自定义悬浮TabBar
最近在写一个需求,自定义TabBar,自定义TabBar一般有两种方式:① 创建一个类继承系统的UITabBar,在layoutSubviews方法中重新调整按钮的位置,再通过[self setValue:tabBar forKeyPath:@"tabBar"]方法,利用KVC设置TabBar,但是iOS 13后苹果粑粑不鼓励使用KVC;② 创建一个继承UIView的类YBTabBar,然...
2022-04-18 12:47:38
1214
原创 iOS-验证码显示在左边问题
项目中有个短信验证码功能,测出来有个验证码靠左的bug,如下图所示:image.png看到问题首先度娘,结果只发现如下两条回答。https://tieba.baidu.com/p/7254829838https://bbs.hupu.com/38043101.html实际上并没有什么用,这个时候就在想是不是封装的这个输入框有问题,解决思路如下:1. 首先用系统的UITextFi...
2022-03-02 19:02:35
313
原创 iOS-Fastlane从0到1配置自动打包
项目进入测试阶段,频繁的打包发布会耗费团队很多的时间,急需搭建一个自动化打包发布的平台,将我们从繁琐的打包发布流程中解放出来。经调研,Fastlane可以实现一行命令实现打包工作,不需要时时等待操作下一步,节省打包的时间去做其他的事。Fastlan安装步骤fastlane前置准备工作:① 安装xcode,且安装了Xcode命令行工具;allison@bogon Desktop % xco...
2022-02-28 14:43:57
993
原创 iOS-UITabbar图标点击动画效果(含Lottie动画)
项目中,产品想实现点击底部tabbar震动效果,也没详细的效果参考,本人调研美团,飞猪,苏宁等APP,梳理了下项目中常见的底部tabbar效果,如下图所示:效果一:01.gif效果二:02.gif效果三:03.gif效果四:04.gif效果五:05.gif以上五种效果都是通过iOS系统CAAnimation动画实现的,如果这几种动画均不能满足需求...
2022-02-25 22:19:55
3186
原创 H5零基础-定位
定位的使用场景:京东.png淘宝.png以上效果,标准流或浮动都无法快速实现,此时需要定位来实现。定位可以让盒子自由的在某个盒子内移动位置 或 固定屏幕中某个位置,并可以压住其它盒子。定位:将盒子定在某一个位置,所以定位也是在摆放盒子,按照定位的方式移动盒子。定位 = 定位模式 + 边偏移定位模式 用于指定一个元素在文档中的定位方式。边偏移则决定了钙元素的最终位置...
2022-01-11 21:03:56
517
原创 DHTMLET-Cascading Style Sheet 2.0 中文手册
image.png下载地址1 百度云盘:链接: https://pan.baidu.com/s/1M_NqPopMMTt7tuuktT9N1g 提取码: tqof下载地址2 GitHub:DHTMLET-Cascading Style Sheet 2.0 中文手册下载地址3 优快云:DHTMLET-Cascading Style Sheet 2.0 中文手册...
2022-01-09 09:28:16
8802
6
原创 H5零基础-Emment语法
Emment语法的前身是Zen coding,它使用缩写,来提高html/css的编写速度,vscode内部已经集成该语法。① 快速生成HTML结构语法② 快速生成CSS样式语法一、 快速生成HTML结构语法1.生成标签直接输入标签名按Tab键即可,比如div,然后Tab键盘,就可以生成 <div></div>;<!-- 输入div, 按Tab键 --&...
2022-01-08 10:30:20
581
原创 iOS-KVC/KVO常见面试题
iOS面试中,KVC、KVO是经常涉及到的一个面试点,下面来总结一下常见的面试题类型。一、 KVO1.KVO的本质是什么?详细介绍核心点:添加KVO对象的isa是NSKVONotifying对象,它是通过OC的Runtime机制,在程序动态运行的时候添加的,它有自己的setXxx方法,会执行Foundation框架里面的_NSSetIntValueAndNotify方法。2.如何手动触...
2021-12-10 14:10:48
1697
原创 iOS - KVC中 forKey 和 forKeyPath区别
KVC全称是Key-Value Code,俗称键值对,可以通过一个key来访问某个属性。常见的API有设置属性值:setValue:<#(nullable id)#> forKey:<#(nonnull NSString *)#>setValue:<#(nullable id)#> forKeyPath:<#(nonnull NSString *)...
2021-12-09 21:45:33
555
原创 GitHub提交代码报错: Support for password authentication was removed on August 13, 2021. Please use a pe......
今天提交代码,push到GitHub上,突然出现这个问题。 Support for password authentication was removed on August 13, 2021. Please use a personal access token instead.具体如下:image.png大概意思就是你原先的密码凭证从2021年8月13日开始就不能用了,必须使...
2021-12-07 17:26:24
491
原创 iOS WKWebview与JS交互
在APP开发中,调用H5极验功能涉及到原生与JS 交互,我用的是系统原生的方式实现,下面记录下实现步骤。(仅涉及iOS端工作流程记录)【OC版本:】@interface ViewController ()<WKUIDelegate,WKNavigationDelegate,WKScriptMessageHandler>@property(nonatomic, strong)WK...
2021-12-07 14:47:44
2918
原创 iOS- SDK开发注意事项记录
因公司业务要求,需要开发一款广告SDK,自己之前未涉及到SDK开发,所以一路踩坑记录如下:【 前言 】1、清晰解决的问题和要求一般而言,一个SDK必然有其深刻的业务背景;对SDK要解决的问题和SDK的特殊要求,了解地越详细越好;常见的要求有:禁止采集用户敏感信息【安全方面】核心代码必须混淆【安全方面】不可以有调试日志,不可以监控上报【安全方面】持久化的敏感数据要加密;【安全...
2021-12-06 17:46:34
490
原创 swift5基本语法-Self 与self
在swift 开发过程中,尤其是第三方库中,我们经常可以看到Self,但是Self与self,它们两个是不一样的,下面我们通过示例来对比下两者的区别。相信大家都知道self这个关键字的具体作用,它跟OC里的self基本一样,但是Self关键字只能用在类里, 作为函数返回值类型, 表示当前类,限定返回值跟方法调用者必须是同一类型,在定义协议的时候Self用的频率很高,而且当你用错Self的时候编译...
2021-12-02 10:01:26
2371
原创 iOS-Swift中Date -VS- Objective-C NSDate
最近Swift项目开发中,涉及到了日期时间的处理,需求是这样的,需要把一个日期格式类型的字符串,转换为Date类型,但是转换完发现和OC中处理的结果不太一样,具体如下所示:先来看下OC版本的代码:@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; // Do any additio...
2021-11-26 17:50:47
1572
原创 swift5基本语法-泛型函数和泛型类型
Swift中泛型可以将类型参数化,提高代码复用率,减少代码量。一、泛型函数【 例 】class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() var a = 10 var b = 20 swap...
2021-10-24 12:32:12
420
原创 swift5基本语法-Error错误处理/异常处理
Swift中可以通过Error协议自定义错误信息例如下面这种错误场景:01.png可以通过自定义Error错误信息来抛出异常,Error信息可以定义为类、枚举、结构体三种形式,用法如下所示:class ClassError: Error { var msg : String init(msg: String) { self.msg = msg ...
2021-09-25 22:18:13
698
原创 swift5基本语法-关键字is、as?、as!、as
is 用来判断是否为某种类型;as 用来做强制类型转换。【 is 示例】class Person {}class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() var obj : Any = 1...
2021-09-25 16:16:38
293
原创 swift5基本语法-反初始化器(deinit)
deinit叫反初始化器,类似OC中的dealloc方法,当类的实例对象被释放内存时,就会调用实例对象的deinit方法。deinit { print("Person对象销毁了") }【例】override func viewDidLoad() { super.viewDidLoad() print("1111") test() ...
2021-09-23 15:03:06
1483
原创 swift5基本语法-init?可失败初始化器
在Swift中,类、结构体、枚举都可以使用init?来定义可失败初始化器。如下所示:class Perosn { var name : String init?(name:String) { if name.isEmpty { return nil } self.name = name }}...
2021-09-23 14:15:47
246
原创 Mac模拟慢速网络- Network Link Conditioner(Xcode12)
我们在开发APP的时候,有时候需要考虑一些弱网的环境。作为开发者,在开发项目过程中,我们也需要进行对于网络环境的调试。Mac环境下模拟慢速网络可以使用苹果官方提供的工具:Network Link Conditioner。网上关于Network Link Conditioner的使用安装比较旧,所以重新整理了一份,建议Network Link Conditioner工具版本号与Xcode版本号保...
2021-08-11 11:24:49
1574
原创 iOS-初识逆向IDA工具使用
逆向小白一枚,记录下自己学习反编译的一些历程 ~一般学习逆向,也是需要借助一些工具的,通过反编译工具,分析二进制文件,生产汇编代码,从而转换成高级语言。常用的反编译工具如下:① Hopper (貌似macOS Big Sur 版本11.2.3 (20D91) 系统下无法破解成功)② IDA (macOS Big Sur 版本11.2.3 (20D91)系统可用) -->IDA工...
2021-07-30 11:03:38
2244
3
原创 swift5基本语法-初始化器required
上一节我们一起来学习了下 swift5基本语法-初始化器,初始化器也有对应的关键词required,用required修饰指定初始化器,表明其所有子类都必须实现初始化器(通过继承或者重写实现)。【 例:】class Perosn { required init() {} init(age:Int) {}}class Student : Perosn { }如上...
2021-06-23 16:25:59
537
原创 iOS-真机模拟器脚本合并(坑)
网上有一种自动脚本shell合并方案,完整脚本代码如下:#!/bin/sh made by wxy#要build的target名TARGET_NAME="ZDAdSDK"if [[ $1 ]]thenTARGET_NAME=$1fi#定义输出目录,方便下文使用UNIVERSAL_OUTPUT_FOLDER="${SRCROOT}/Products/${CONFIGURATION...
2021-06-21 17:30:03
331
原创 iOS-真机模拟器脚本合并framework(亲测可用)
在实际SDK项目开发中,我们会经常随时打包framwork,为了让静态库在模拟器和真机都可以正常的运行,就涉及到如何把一个工程生成的静态库打包以后生成的framework进行合并。最传统的方式,通过终端的lipo -create 真机路径 模拟器路径 -output 真机路径 命令,但是太过于麻烦,网上有很多脚本,下面xcodebuild.sh脚本亲测可以帮助我们快速合并framwork.操...
2021-06-21 15:07:26
825
原创 iOS- P12发生错误,无法导入项目
最近导入P12的时候遇到发生错误,无法导入项目。不能取回此项的内容。01.png解决方式1:打开钥匙串---登录---,直接把证书拖过来然后,查看--我的证书,里面,找到证书,即可02.png解决方法2:使用下列命令尝试:security import 证书.p12 -k ~/Library/Keychains/ login. keychain03.jpg...
2021-05-09 17:08:17
6396
1
原创 swift5基本语法-初始化器
在swift中,类class、结构体struct、枚举enum 都可以定义初始化器。实际开发中枚举自定义初始化用的比较少,枚举定义类型单一,下面主要讲解下类class初始化用法。枚举常规用法如下:enum Season :Int { case spring case summer case autumn case winter}Season.spring...
2021-05-02 21:30:01
384
原创 iOS - TestFlight测试设置(内部测试)
TestFlight现在是苹果官方的测试软件,相比其他测试工具省去了很多操作。下面介绍TestFlight用法。配置步骤, TestFlight用法,内部测试前提:使用TestFlight之前你必须确保你的app已经上传到 iTunes Connect ,如果你不知道怎么上传请自行度娘。第一步:在 iTunes Connect 中选中 itunes connect.,选择我的app,...
2021-03-21 13:37:22
3891
原创 swift5基本语法-方法/重写
一、方法Swift中枚举、结构体、类都可以定义实例方法、类型方法。实例方法(OC中的-减号方法): 通过实例调用类型方法(OC中的+加号方法): 通过类型调用,用static或者class关键词定义。实例方法实例:class Person { static var age = 0 init() { Person.age += 1 } ...
2021-02-28 14:23:57
335
原创 iOS -Xcode 消除警告
在程序开发过程中,有时候会因为编译器无法识别的问题,出现了某些警告信息,当有些强迫症不想看到黄色感叹号时,可以采取一些特殊的手段强制消除警告。#pragma clang diagnostic push#pragma clang diagnostic ignored "警告名称"// 被夹在这中间的代码针对于此警告都会无视并且不显示出来#pragma clang diagnostic pop...
2021-01-31 17:27:17
277
原创 iOS - GCD中的定时器
GCD定时器优点:① GCD定时器不受RunLoop约束② 比NSTimer更加准时。GCD定时器用法敲 dispatch_source_选择第一个提示的代码段,注意不是dispatch_time,而是dispatch_source_.01.png敲完dispatch_source并选择第一个,就会有下面代码段的提示:02.png这里参数比较多,我们先来看下各个参数...
2021-01-30 19:50:23
770
原创 iOS - objective-c中realm的迁移
上一章节中我们学习了objective-c中realm的对应关系,例子中我们涉及到两种模型关系的对应,但是很多实际项目开发中,我们还会涉及到数据库迁移的问题。我们一起来让我们来探索 Realm 中数据库迁移的方案。数据库迁移大致分为以下几种情况:1.数据结构迁移2.数据迁移3.属性重命名4.多版本增量迁移场景一:一 . 数据结构迁移比如一个MigrationModel的...
2021-01-30 13:09:10
491
原创 iOS -objective-c中realm的对应关系
上一章节中我们学习了objective-c中realm的简单实用,例子中我们只涉及到一个模型的存储,但是很多实际项目开发中,我们一般会涉及到模型嵌套的关系。常见的模型关系分为:一对一关系、一对多关系、双向关系。我们一起来让我们来探索 Realm 在两个对象之间能够定义的各种关系。步骤流程:1. 一对一关系演示01.jpg准备工作:先定义一个Person和Dog的类< Per...
2021-01-24 20:50:23
203
原创 iOS -objective-c中realm的简单实用
在swift项目的开发中,realm是炙手可热的移动端数据库,我们一起来简单了解下realm。目前realm支持Java、Swift、Objective-C、Java-Script、.Net共计5中语言,公司项目目前是OC开发,本次我们选择Objective-C版来学习下realm的用法。准备工作1.创建一个oc的项目通过cocoapods管理方式引入realm ( pod 'Realm...
2021-01-24 18:48:50
620
原创 swift5 基本语法-属性
swift中跟实例相关的属性可以分为2大类。1. 存储属性(Stored Property)1.1 相当于成员变量的概念;1.2 存储在实例的内存中;1.3 结构体和类可以定义存储属性;1.4 枚举【不可以】定义存储属性;2. 计算属性(Computed Property)2.1 本质就是方法(函数);2.2 不占用实例的内存;2.3 枚举、结构体、类都可以定义计算属性;s...
2021-01-06 14:53:55
258
原创 swift5 基本语法-闭包
在swift中,说到闭包表达式(Closure Expression),我们就能想起来Objective-C中的Block,确实两者之间非常相似,功能也基本相同,都可以在代码中使用或者用来作为参数传值。我们一起来学习下swift中的闭包用法。在swift中,可以通过func定义一个函数,也可以通过闭包表达式定义一个函数。1.闭包语法{(参数列表) ->返回值类型 in 函数体代码}【...
2021-01-05 18:35:41
246
原创 swift5 基本语法-结构体和类
在swift标准款中,绝大多数的公开类都是【结构体】,比如Bool、Int、Double、String、Array、Dictonary等常见类型在swift中都是结构体。1.结构体【 例:】struct Season { var spring : String var summer : String var autumn : String var winter : S...
2021-01-04 22:54:53
206
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人