ReyZhang
iOS, Flutter
展开
-
如何在.podspec 文件中添加对本地库的依赖
说明在使用cocoapods来管理库时, 当前库想要添加一个本地库的依赖, 尝试在.podspec 文件中设置如下依赖:s.dependency = 'my pod', :path => ''尝试后发现是不可行的。 .podspec 中不支持 :path => 或者 :git => 的方式来引入本地库。那么有办法可以解决吗 ?方案通过查资料,终于找到了合适的方案。 首先,我们不能向上面那样在.podspec中设置pod的依赖, 但可以在Podfile文件中指明pod 的sour原创 2022-04-18 17:24:22 · 4063 阅读 · 0 评论 -
iOS 微信、支付宝、银联、Paypal 支付组件封装
移动支付为人们的生活提供了便捷,越来越多的应用也都开始集成了移动支付功能。国内目前的几大支付平台分别有微信、支付宝、银联,国际的有Paypal, ApplePay等。 大部分的电商应用基本上对时下这几个支付平台都有集成,为用户下单支付提供更多的便利及选择。本人目前所从事的旅游行业也是要与电商结合,会在线销售全球不同目的地的景点门票,酒店等产品。所以也免不了涉及到移动支付这一块。 在使用各家平台的iOS sdk时必然会碰到很多集成上的问题,但所幸都一一解决。早就想找个时间把集成时碰到的问题写下来,一来原创 2021-11-16 09:15:19 · 2635 阅读 · 0 评论 -
OC与Swift混编 注意事项
前言随着Swift发展, 很多新的项目开始使用Swift作为首选语言。 Swift语言以其简捷,快速的特点获得了一大波粉丝,我也是其中之一。项目背景:公司一些旧项目大都使用OC编写, 运营中的项目也会时常维护。所以在新需求开发时,我也会尝试使用Swift语言来编写(使用OC还是Swift根据项目需要来),这就涉及到OC与Swift语言的混编。 大部分的情况是OC代码调用部分Swift编写的模块。 而在混编的过程也遇到了一些问题,本文就将这些问题一一整理出来。注意事项1.oc调用swift的类sw原创 2021-12-16 17:17:35 · 1951 阅读 · 0 评论 -
ios symbolicatecrash 符号化crash
是十六进制函数地址映射信息的中转文件,调试的symbols会包含在这个文件中,symbols即类名、函数名等。文件夹里,右键 xxx.app 文件 -> Show in Finder -> 就能找到。输出路径之后,找到该文件,在桌面创建一个。通过Archives打包上传时获取。文件后,还有一项工作要做就是检查。在.crash中查找这个udid。拷贝到 crash 文件夹中。打包时,应该保存每个正式版的。文件,以备定位线上问题使用。导出符号化crash 文件。文件了,在项目工程的。.dSYM的uuid。原创 2024-03-22 10:50:43 · 494 阅读 · 2 评论 -
ios 开发问题小集 [持续更新]
iOS开发中遇到的问题整理, 短篇的介绍问题出现的原因及解决方案原创 2023-11-09 09:16:20 · 1842 阅读 · 6 评论 -
iOS 常见编译报错及解决方案汇总(持续更新)
如下图示A: 该类问题一般都是因为导致编译报错。A: 此类问题根据报错即可知道,是由于 'xxx’文件找不到导致的。 但出现这种问题的情况不止一种 :原创 2022-06-17 20:00:00 · 1494 阅读 · 0 评论 -
ios 苹果授权登录及图标要求
前言如果要上架的应用集成了三方登录,那么在审核时,苹果会强制要求应用也要集成苹果登录。如果应用没有集成一般情况下都会被审核团队给打回来。苹果集成登录首先,你需要在开发者中心,找到你的应用,勾选上 Sign in with Apple勾选并保存好后, 打开Xcode, 找到项目中的Signing&Capabilities 并添加sign in with apple。完成上面的配置以后,就可以写代码集成了在进行代码集成前,需要先导入一个框架 AuthenticationServices原创 2021-11-23 14:52:13 · 3201 阅读 · 0 评论 -
NSURL请求中含有中文的解决方法
要解决这个问题就需要对包含中文字符的地址先进行url encode编码。网上有很多解决的方法,但都是老版本的方法,现在已被iOS作废了,所以有必要更新一下代码。当对含有中文的url字符串,进行NSURL对象包装时,是不能被识别的。不会得到期望的NSURL对象,而是返回一个nil 值;在对含有中文的url字符串进行NSURL对象包装时, 先进行中文编码.再通过编码后的url地址创建NSURL对象。原创 2023-06-28 15:21:40 · 1419 阅读 · 0 评论 -
融云IM iOS sdk 集成 一篇就够了
融云IM简介融云的定位是只专注即时通讯的消息发送功能,融云服务器不会维护用户的好友关系及群组关系,这就需要集成的业务系统来管理用户的好友关系与群关系等。 通过融云,只需要知道目标用户的targetId就可以向目标用户发送消息。如何连接融云服务器 ?连接融云服务器,需要向融云服务器传递将要连接服务器的用户唯一标识,融云会根据传递的userid(唯一标识)来返回访问融云服务器的令牌token. 关于userid的选取,可以使用业务系统的userid(建议),或者单独建立一套唯一id的体系给融云服务器原创 2021-11-15 12:48:14 · 666 阅读 · 0 评论 -
Cordova跨平台方案 iOS工程创建的步骤
1.首先需要获取命令行的支持我们需要在terminal终端可以执行node or npm的命令。接下来是安装的步骤:To install the cordova command-line tool, follow these steps:Download and install Node.js. Following installation, you should be able to invoke node or npm on your command line.Install the cord原创 2021-12-07 15:03:15 · 392 阅读 · 0 评论 -
iOS集成支付宝支付 Alipay
前言时下国内最流行的移动支付方式,莫过于微信支付与支付宝支付了。 对于电商应用,基本都会对这两种支付平台进行集成。今天就简单介绍一下支付宝SDK iOS平台上的集成过程。资源下载现在支付宝App支付的SDK已全面升级,下载地址“支付宝SDK”。集成官网上有关集成的文档写的还是比较清楚的,就不再赘述了。具体的集成流程看这里支付宝sdk官方集成文档自签名方式的二次封装进行再次封装的目的很简单,就是更便于客户端使用及复用。- 关于支付配置支付宝的sdk在支付时需要提供商户的pid,收款账号,原创 2021-11-15 16:05:07 · 1809 阅读 · 0 评论 -
iOS 集成微信支付
前言最近在进行的项目,需要集成第三方支付。业务需要集成支付宝,微信,银联,Paypal等支付方式。在使用各家sdk时会发现有些第三方sdk调用时不够方便,简单。所以就有了进行再次封装的想法。资源文档下载地址 :Demo及SDK下载集成文档: iOS接入指南业务流程:官方流程文档怎么集成看官方文档就可以了,本文重点在二次封装上二次封装微信支付客户端集成流程:需要服务端根据订单信息,返回一个预支付数据PrepayData,客户端拿到这个预支付数据后,调用微信支付sdk完成支付。封装后的代码原创 2021-11-15 13:04:05 · 896 阅读 · 0 评论 -
iOS集成 Paypal 贝宝支付
前言这是第三篇关于支付封装的文章了,前两篇是关于支付宝和微信支付的封装。如果您也对这两篇文章感兴趣可以移步到iOS集成支付宝支付 AlipayiOS集成微信支付中查阅。同时,如果你有更好的建议,可以在评论里给我留言,一起讨论。Paypal 集成Paypal iOS sdk的下载请到github的地址:https://github.com/paypal/PayPal-iOS-SDK 中查看。在项目的README.md中已经介绍了如何将Paypal sdk 集成到项目中去。如果你用 cocoa原创 2021-11-15 16:22:09 · 1931 阅读 · 0 评论 -
ios 三方库的使用之 VKMsgSend
已知原生oc 在处理一些问题上的痛点 :现有的NSObject中的方法performSelector:withObject:使用起来不够直接,并且有太多限制(不能进行多参数传递)使用runtime的objc_msgSend的方法,在32位时代还算好用,到了64位的时候,调用起来必须强制转换使用runtime来获取Class,进而获取Method,进而获取Imp进行直接调用,同objc_msgSend一模一样,都必须强制类型转换针对这些问题VKMsgSend库都做了相应的封装处理,使用起来也原创 2021-12-07 13:05:06 · 813 阅读 · 0 评论 -
ios 三方库的使用之 YYLabel
如何设置内容显示的最大行数在展示文本时,我们的UI给的空间有限,需要对长文本进行截取。 那么通过YYLabel控件,如何控制内容的显示呢?通过尝试,给YYLabel指定numberOflines属性来设置并不起作用。 需要通过另外的方式来设置。我们知道,除了通过attributeText来给YYLabel赋值文本外,我们还可以通过 YYTextLayout 来封装文本内容的富文本样式(颜色,大小,字体等)的方式来赋值。YYTextLayout对象的创建,需要依赖一个叫YYTextContainer的对原创 2021-12-04 18:46:44 · 1464 阅读 · 0 评论 -
ios 三方库的使用之 Aspects
前言在使用ios11的系统时,发现uitableview在上拉加载更多时,加载出来数据后tableview的位置有跳动问题。 通过搜索·很快找到了问题的解决方案,需要给tableview设置几个属性,代码如下:tableView.estimatedRowHeight = 0;tableView.estimatedSectionHeaderHeight = 0;tableView.estimatedSectionFooterHeight = 0;这个问题倒是解决了,新的问题又出现了:所有用到tab原创 2021-12-06 11:03:01 · 736 阅读 · 0 评论 -
UICollectionView 设置header的二种方法
前言项目中使用列表控件的场景比较多, 通常在控件选择上,也会优先选择UITableView控件。我们已知的滚动控件,除了UITableView外, 还有UIScrollView 和UICollectionView。UITableView和UICollectionView都继承自UIScrollView,看下类的定义:UITableView.hUIKIT_EXTERN API_AVAILABLE(ios(2.0)) NS_SWIFT_UI_ACTOR@interface UITableView :原创 2021-12-04 17:59:59 · 2655 阅读 · 0 评论 -
lipo 命令合并真机与模拟器生成的framework
前言我们已知的模拟器支持的架构是i386, x86_64 , 真机支持的架构是arm64, armv7等。 自制的framework如果最终需要支持模拟器及真机运行的话,那么就需要将这两种环境下生成的 framework进行合并。 这里会用到一个命令 lipo 。接下来会简单进行介绍lipo命令的使用1. 查看库文件使用的处理器架构lipo -info xxx.a2.提取一个库的某处理器架构包lipo xxx.a -thin armv7 -output armv7.a3.两个不同处理器架构原创 2022-03-30 15:46:42 · 1287 阅读 · 0 评论 -
AVMakeRectWithAspectRatioInsideRect 的使用
此外, 如果要在使用aspectFillMode模式的UIImageView中显示UIImage的精确大小的话, 使用这个函数也是很有用的。它可以根据你提供的size,然后自动计算当前size按比例能缩放成多大的,然后返回.返回的Rect是一个居中显示的矩形。.........原创 2022-08-18 18:05:25 · 623 阅读 · 0 评论 -
iOS 图集滑动到最后时添加“显示更多”效果的view组件 实现
先看演示效果:实现原理在上图演示中,我们看到,当图集滑动到尾部时,再拖动时会展示一个“继续滑动查看全部图片”的自定义控件。 我们就介绍一下这个控件的实现原理1、将控件添加到滚动视图上,滚动视图可以是uiscrollview, uitableview, uicollectionview。 控件在滚动视图中的位置需要根据图集的显示个数来进行计算2、添加观察者,实现的关键。 观察滚动视图的滚动位置 contentOffset属性3、根据滚动位置判断是否已滚动到图集的尾部或设置的可允许释放的范围代原创 2021-12-28 07:17:50 · 752 阅读 · 0 评论 -
Swift HandyJSON库中的类型相互转换的实现
前言阅读优秀的开源框架,对提升自己的能力有很大帮助。HandyJSON库就是其中的优秀框架之一, 本文介绍一下HandyJSON库是如何处理类型间相互转换的。我们在开发时,常见的类型转换如下:Data <- -> StringDate <- -> 时间戳Date <- -> StringURL <- -> StringUIColor <- -> 十六进制的hex颜色…等等吧类型转换HandyJSON库的设计类型的转换 其实原创 2022-04-09 22:22:19 · 3134 阅读 · 0 评论 -
oc 下定义字符串枚举
前言在oc下常用的定义枚举的方式有两种一种是使用enum关键字,示例如下:enum MyColor { Color_Red, Color_Green, Color_Orange,};typedef enum MyColor MyColor;或者使用typedef enum { Color_Red, Color_Green, Color_Orange,}MyColor;这样就可以用简写的MyColor代替 enum MyColor了。另原创 2021-12-14 17:23:49 · 860 阅读 · 0 评论 -
CGAffineTransform 介绍
介绍CGAffineTransform是一个用于处理形变的类, 它可以将作用的控件进行平移、缩放、旋转等形变, 其坐标系统采用的是二维坐标系, 即向右为x轴正方向,向下为y轴正方向苹果官方文档中是这样定义的:CGAffineTransform用于绘制2D图形的一个仿射变换矩阵用于做旋转、缩放、平移。一个仿射变换矩阵 (是一个3*3的矩阵)它采用的是二维坐标系( 即向右为x轴正方向,向下为y轴正方向)CGAffineTransform提供了这样一个函数CGAffineTransform C原创 2022-04-25 10:44:41 · 521 阅读 · 0 评论 -
自定义NSOperation
前言如果系统提供的NSInvocationOperation和NSBlockOperation对象不能满足自身需求, 我们可以自定义NSOperation, 来实现特定的功能。 需要知道的是NSOperation 是一个抽象类,所以我们不能直接使用该类来创建实例。通常的做法是继承NSOperation,并重写里面的方法。 要重写哪些方法,这要取决于你要实现的是非并发还是并发的NSOperation。定义同步的NSOperation要简单许多,只需要重载main这个方法,在这个方法里面执行主任务,并原创 2022-05-02 10:00:00 · 416 阅读 · 0 评论 -
高性能iOS应用开发中文版读书笔记
1.内存消耗内存消耗指的是应用消耗的RAM。不同于桌面应用,磁盘不会被用来分页内存。也就意味着应用只能使用有限的RAM。这些RAM的使用者不仅包括在前台运行的应用,还包括操作系统服务,甚至还包括其他应用所执行的后台任务。应用中的内存消耗分为两部分: 栈大小和堆大小。栈大小应用中新创建的每个线程都有专用的栈空间, 该空间由保留的内存和初始提交的内存组成。栈可以在线程存在期间自由使用。另外,线程的最大栈空间很小。堆大小每个进程的所有线程共享同一个堆。 一个应用可使用的堆大小通常远远小于设备.原创 2021-12-20 16:35:10 · 1447 阅读 · 0 评论 -
CocoaPods 重装
前言在使用Cocopods 时会碰到各种各样的问题,有些问题可以通过更新仓库或更新pods来解决。 而有些问题无论你使用何种方法还是得不到解决。这时你只有一个方法可以操作(大招):重装Cocopods卸载命令行输入:sudo gem uninstall cocoapods并不能完全卸载掉,你可以通过如下命令查看Cocoapods其余相关的组件gem list --local | grep cocoapods我的显示:cocoapods-core (1.11.2)cocoapods-de原创 2022-01-04 16:44:19 · 2320 阅读 · 4 评论 -
使用Cordova 快速打包WebApp为原生应用详解 (加壳封装)
前言原创 2021-12-09 14:15:28 · 2189 阅读 · 0 评论 -
UICollectionView 设置水平滑动后,调整每个Item项的排列方式
需求:在app中很常见的UICollectionView应用,动态加载模块入口,后台返回多少个我们就显示多少个,并且一页是2行4个看起来很简单,做好后却发现不尽人意,因为UICollectionView的排列方式不是我们需要的。进入主题,假设要显示此数组的数据self.datas = @[@“0”, @“1”, @“2”, @“3”,@“4”, @“5”, @“6”, @“7”];分析排列方式 大家可以看到默认的排列方式确实是不如愿,那该怎么改呢?往下看…如果我把数组,改成self.datas原创 2021-12-17 15:29:03 · 1534 阅读 · 2 评论 -
自定义UINavigationBar 适配iOS11, iOS15的问题
前言时常会遇到这样的需求:APP应用大部分页面,会使用统一的导航条样式。但有些特殊情况下需要展示不同的效果。 我们知道在一个导航控制器栈中处理不同的导航条样式是比较繁琐的, 即使能处理结果也达不到预期。 针对这样的需求,最简单的办法就是特殊情况下的页面自定义UINavigationBar方案为了还可以使用系统提供的API, 我们自定义的导航条控件还是继承自系统提供的UINavigationBar。 这样我们就保留了可以继续使用系统提供的多种能力,如:设置 leftBarButtonItem, righ原创 2021-11-16 10:33:05 · 2084 阅读 · 0 评论 -
iOS 微信、支付宝、银联支付组件的进一步设计
前言有段时间没写技术文章了,一是因为工作太忙,再者因为本人文笔实在一般。最近终于闲下来,本着分享的目的将一些组件设计上的心得与大家分享。本篇文章是基于原有一篇关于支付文章的进一步优化设计,所以在阅读本篇文章前还是建议先移步到那篇文章。文章地址: 微信、支付宝、银联、Paypal 支付组件封装描述在封装支付接口时,需要面临各支付平台不同SDK集成的问题,有的支付第三方平台只通过sdk组件就可完成支付,像支付宝,但大部分的支付第三方平台需要先去调用服务端API接口获取支付需要的信息,拿到这些支付信息后原创 2021-11-17 13:56:30 · 726 阅读 · 0 评论 -
Swift CustomStringConvertible 协议的使用
先看一下Swift标准库中对协议的定义从声明中我们可以看到协议中只包含了一个 的只读属性 ,而且通过协议命名也可以窥探到它的作用 Custom+String+Convertible (所作用的类型去自定义String的转换)实现协议类似于在Objective-C中重写方法, 可用于:如标准库中给的示例,拿出来分析一下:通过上面的介绍,我们基本上了解了CustomStringConvertible协议的用法, 接下来介绍几种使用场景。如果在使用枚举时,除了需要访问枚举的外,还需要可以方便的输出每个枚举原创 2022-07-11 10:48:49 · 689 阅读 · 0 评论 -
ios 编译时报 Could not build module xxx 的解决方法尝试
使用 #import <xx/xx.h> 在代码中来导入某个.framework库,编译时确收到了如下错误:Could not build module xxx查阅很多资料,也试过很多办法, 都不能解决问题。 接下来就是各种尝试 :尝试一:使用#import 'xxxx.h' 的方式,来替换 #import <xx/xx.h> 。 再次编译项目,还是报错。 但这次报的错误并非是Could not build module , 而是另外一种错误 : 未找到 xx.h fi原创 2022-05-10 09:33:51 · 4614 阅读 · 0 评论 -
在 Xcode 中使用 Swift Package
以前在 macOS/iOS 开发中,我们通常使用CocoaPods或Carthage等非官方工具来管理项目中的三方库依赖。但现在我们又多了一种方式,它就是苹果官方提供的。苹果从Xcode11以后 增加了的功能, 用来添加和管理依赖的三方库。在使用Swift Package 时,只需要输入第三方库的git地址, 其他的会自动完成,非常方便。(Swift 包管理器,一般简称SwiftPM或者SPM)是苹果官方提供的一个用于管理源代码分发的工具,旨在使分享代码和复用其他人的代码变得更加容易。原创 2023-05-17 15:29:36 · 1268 阅读 · 0 评论 -
Moya+RxSwift+HandyJson 实现网络请求及模型转换
CocoaPods集成pod 'RxCocoa'pod ‘RxSwift’pod 'Moya/RxSwift’pod ‘HandyJSON'Moya简单使用定义枚举,存储网络请求// 1 定义一个枚举,存放我们的网络请求enum MemberApi { case login(username:String,password:String,token:String)}实现moya的TargetType协议extension MemberApi:TargetType{原创 2021-11-23 15:07:29 · 1201 阅读 · 0 评论 -
使用UICollectionView实现聊天列表的细节整理
一、初始进入聊天界面,数据加载完成后,默认滚动到底部二、发送消息后,新消息在底部显示三、下拉加载更多历史消息四、键盘弹出时,调整聊天内容列表的显示位置原创 2023-06-08 14:12:37 · 313 阅读 · 0 评论 -
UITableView cell呈现的动效整理
前言对于列表控件,相较于UICollectionView, UITableView的使用频率是相当高的。体验好的应用在列表数据展示的动效处理与设计上会下很多功夫。 本文整理了如下几种列表cell的动效呈现效果。cell 缩放呈现cell 从下到上跟随呈现cell 从上到下逐个呈现cell 缩放呈现先看效果:核心代码:- (void)scrollViewDidScroll:(UIScrollView *)scrollView { CGFloat viewHeight = scro原创 2022-01-30 20:20:22 · 596 阅读 · 0 评论 -
SwiftHub项目 之网络层封装的一点见解
前言Github上有不少优秀的开源项目,SwiftHub就是其中之一。本篇文章是本人在阅读完SwitHub项目后,对项目中网络层封装总结的一些个人见解。SwiftHub项目地址: https://github.com/khoren93/SwiftHub一点见解SwiftHub 项目的网络层使用的Moya+RxSwift 做的封装,在使用前需要在pods中导入用到的库文件platform :ios, '11.0'use_frameworks!inhibit_all_warnings!tar原创 2021-11-23 17:45:18 · 857 阅读 · 0 评论