自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

长沙火山

立志做一名优秀的软件工程师,在技术上追求一专多能,在思想上追求与时具进。

  • 博客(426)
  • 资源 (52)
  • 问答 (1)
  • 收藏
  • 关注

原创 iOS Secure Enclave

Secure Enclave 是一个绝对的安全环境,所以存放的当然也是最高机密的数据。那什么数据属于最高机密的数据呢?一般是用户的生物特征信息,比如指纹信息 TouchID、面部信息 FaceID 等。

2021-12-22 17:19:16 3975

原创 常用的加密算法

一、对称加密算法对称加密算法就是传统的用一个密码进行加密和解密。常用的对称加密算法算法密钥长度工作模式填充模式DES56/64ECB/CBC/PCBC/CTR/…NoPadding/PKCS5Padding/…AES128/192/256ECB/CBC/PCBC/CTR/…NoPadding/PKCS5Padding/PKCS7Padding/…IDEA128ECBPKCS5Padding/PKCS7Padding/…密钥长度直接决定加密强度

2021-12-01 11:02:33 5563

原创 国密算法介绍

一、前言加密是通过“加密算法”将明文加密成密文,可以通过“密钥”和“解密算法”将密文还原成明文。密码学中应用最为广泛的三类算法:对称算法(分组密码算法):AES/DES/SM4非对称算法(公钥密码算法):RSA/SM2摘要算法(杂凑算法):MD5/SHA-I/SM3二、国密算法的意义随着金融安全上升到国家安全高度,近年来国家有关机关和监管机构站在国家安全和长远战略的高度提出了推动国密算法应用实施、加强行业安全可控的要求。摆脱对国外技术和产品的过度依赖,建设行业网络安全环境,增强我国行业信息

2021-12-01 11:01:34 11476

原创 鸿蒙网络请求(下):工具类封装和使用

通过上一篇鸿蒙网络请求的教程,了解了网络请求的基本用法,这一篇文章主要是对上一篇鸿蒙网络请求代码的进一步封装,把网络请求封装成一个工具类。1. 网络请求工具类 RequestUtilpackage com.example.hmrequest.util;import ohos.hiviewdfx.HiLog;import ohos.hiviewdfx.HiLogLabel;import ohos.utils.zson.ZSONObject;import java.io.*;import ja

2021-08-05 15:50:29 1266

原创 鸿蒙网络请求(上):网络请求的使用

最近在学习鸿蒙开发,在鸿蒙网络请求这块遇到了困难。鸿蒙官网虽然提供了网络请求的API和代码事例,但是描述的过于简单,基本上就是贴代码,所以对于一个初学者来说,仍然看的是一头雾水。Github上也有很多第三方封装的鸿蒙网络请求框架,但是既然是学习就要从最基础的开始,而且那些网络请求框架大致看了下,感觉比较复杂,不太好下手。小编也是花了大概一周的时间,自己慢慢摸索,才入门了鸿蒙的网络请求。下面将小编的一些学习成果分享给大家,帮助大家少走弯路。一、需要添加网络请求权限在进行鸿蒙网络请求开发时,先要进行网络请求

2021-08-03 17:37:50 2659 1

原创 视频剪辑 图文教程

一米剪辑图文教程一、提取视频功能说明:提取视频是根据抖音视频链接地址提取无水印视频,能无痕提取抖音视频,并保存到自己的相册。图文教程:1、打开抖音app,找到自己想要下载的视频。点击分享按钮,找到 “复制链接” 按钮,然后点击按钮复制抖音链接。2、 点击 “提取视频” ,然后在文本框中输入刚刚在抖音复制的抖音链接,再点击 “提取视频” 按钮。3、等待视频解析完之后,直接点击 “导出到相册”,无水印视频就下载到相册了。...

2021-07-19 11:29:03 11640

原创 Android JNI开发一: JNI基础知识

JNI基础知识Android系统底层的框架大多采用的是C或者C++语言实现的,但是Android上层的框架是采用Java实现的,所以我们平常进行Android也是采用Java语言开发。虽然Android底层采用C或者C++实现,但是我们在进行Android开发的时候,却不能直接调用C或者C++,而是需要采用JNI来调用C或者C++,下面小编就为大家介绍什么是JNI?以及怎么使用JNI来实现调用C或者C++语言。一、JNI 介绍1.1 简介JNI 即 Java Native Interface,通俗的

2021-07-16 10:32:22 1325

原创 Android JNI开发四: 鸿蒙JNI开发​​​​​​​

一、JNI1.1 创建工程用 DevEco Studio 创建一个新的工程,我的 DevEco Studio 版本为2.1。创建工程第一步的时候,需要选择模版,请选择 Native C++ 这个模版。这个模版为我们提供了JNI开发的环境,我们在这个模版里可以更容易的使用JNI 去调用C语言代码。(1) 创建工程第一步:选择 Native C++ 模版,如下图所示:(2) 创建工程第二步:填写项目名称、项目存放目录,如下图所示:建议填写project name和小编的一样,因为后面的一些配置和包

2021-07-14 11:48:22 1148

原创 Android JNI开发三: SO库的使用

本篇主要介绍如何在普通的安卓工程中使用编译好的SO库文件。首先,新建一个普通的安卓项目工程,我的工程名叫SOTest。项目工程建好后,就将SO库引入到工程中。2.1 将SO库引入工程中在不同的CPU架构下,会被编译成不同的SO库,所以我们需要将整个的lib文件拷贝至我们的项目工程中。SO库需要拷贝到app目录下,路径一定要正确,否则有可能出现因为路径不对而加载不到SO库。2.2 配置SO库的路径在build.gradle文件中添加so库的路径配置和依赖配置,如下图所示:配置代码:

2021-07-09 16:58:24 2626 3

原创 Android JNI开发二: 如何生成SO库

1.tail假定日志文件为catalina.logtail -f catalina.log 该命令用来的查看动态的日志信息tail -fn 200 catalina.log 查看最后200行日志,且动态显示tail -f catalina.log | grep '过滤字符串' 显示存在需要过滤的字符串的行的动态的日志信息2.grepgrep '过滤字符串' catalina.log 从日志文件中过滤出字符串grep -r '过滤字符串' ./...

2021-07-09 16:50:45 1957 2

原创 iOS 屏幕原点坐标

当我们设置navigationBar的背景图片setBackgroundImage(注意是背景图片不是背景颜色)的时候,坐标起点也会变成(0,64),因为当我们设置背景图片的时候,系统会自动修改translucent为NO。我们给一个空间设置origin为(0,0)的时候,有时候这个点会再屏幕的最左上角(有导航栏的情况下还可能会被导航栏给盖住),有时候又在导航栏的下边,都是同样的原点坐标,那么为什么会出现这种情况呢?

2023-01-30 09:11:05 9

原创 iOS 隐藏导航栏返回按钮文字

iOS 隐藏导航栏返回按钮文字。

2023-01-30 09:04:59 5

原创 iOS 国际化(多语言)

Xcode使用带有 “.strings” 扩展名的文件来存储和检索 程序中使用的所有字符串,以及支持的每种语言。创建完“InfoPlist.strings”(命名随意~),工程目录结构文件如下,单击“InfoPlist.strings”,查看右边的属性,在Localizable栏添加语言。”,选择“iOS”对应的“Resource”中的“Strings File”)。这个时候就可以在对应语言的“InfoPlist.strings”文件中,添加所支持的字符串了。创建一个 “.strings” 扩展名的文件。

2023-01-19 14:25:37 1528

原创 iOS 内存泄漏检测 Instruments Leaks

3. 此时,仍然看不到具体的代码位置,需要选择底部的 Call Tree,在弹窗中选择 Invert Call Tree 和 Hide System Libraries,即可显示出具体内存泄漏的代码。4. 在运行过程中如果发现Leak Checks(如图)出现红色X说明检测到内存泄露,将鼠标点击Leak Checks,在下方即可看到内存泄漏的相关信息。把调用层级最深的方法显示在最上面,更容易找到最耗时的操作。3. 在显示的 Leaks 面板中,点击左上角红色点,即可运行内存检测。

2023-01-19 13:36:57 1630

原创 iOS URL转码

最近开发一个相册的功能,测试人员反馈部分图片加载不出来,但是安卓却可以正常显示。第一反应应该就是图片的URL有问题,于是断点调试将图片的URL打印出来,果不其然发现图片URL里面含有中文。于是在网上搜索了一下,发现有两种解决方案,下面将这两种方法对比一下。

2023-01-18 17:32:03 736

原创 iOS YYModel的使用

YYModel支持多样化的数据类型,甚至字典,数组等数据,如果不存在,则该model会自动设置为null,该例子提出使用NSArray和NSDictionary作为数据,效果依然一样。@end不得不说YYModel还是考虑很全面的,不仅支持各种类型数据,甚至考虑到获取到数据的层次关系并没有那么完美,那么这个时候该怎么做呢。return @{@"sex":@"sexDic.sex" // 声明sex字段在sexDic下的sex};}@"name":@"张三",

2022-12-22 18:05:00 1542

原创 iOS 图标和文字自定按钮

实现上图标下文字,左图标右文字,右文字左图标设置的按钮。在项目开发中,经常需要用到按钮,系统默认的按钮是图标在左边,标题在右边。但往往实际情况是多变的,有时候图标在右边、有时候图标在上面,这个时候系统的按钮往往无法满足需求,所以我们需要自定义按钮来满足需求的开发。下面提供两种方法来实现按钮图标和文字自定按钮。

2022-11-29 16:00:34 420 1

原创 Swift TableView的使用

创建一个列表,包含列表的头部和尾部,SectionHeader和SectionFooter。

2022-11-25 17:32:39 381

原创 iOS AAChartKit 图表库的使用

AAChartKit 项目,是AAInfographics的 Objective-C 语言版本,是在流行的开源前端图表库Highcharts的基础上,封装的面向对象的,一组简单易用,极其精美的图表绘制控件。

2022-11-24 15:28:33 571

原创 Git的使用

gitignore中已经标明忽略的文件目录下的文件,git push的时候还会出现在push的目录中,或者用git status查看状态,想要忽略的文件还是显示被追踪状态。原因是因为在git忽略目录中,新建的文件在git中会有缓存,如果某些文件已经被纳入了版本管理中,就算是在.gitignore中已经声明了忽略路径也是不起作用的,这时候我们就应该先把本地缓存删除,然后再进行git的提交,这样就不会出现忽略的文件了。适用情况:多个人协同开发时,我本地修改了某个文件,但是我并不想提交这个文件。

2022-11-23 17:36:19 31

原创 Pod 命令的使用

【代码】Pod 命令的使用。

2022-11-23 16:36:24 52

原创 iOS 列表页面实时刷新解决方案

客户要求APP客户端每次切换Tab,都需要从服务器去获取最新的数据,所以每次切换Tab,客户端都会去主动刷新接口,以获取最新的数据。但是实际发现,每次切换Tab都去刷新,从用户体验上感觉刷新太频繁了;从性能上体验,没有数据更新也去频繁的请求接口,很消耗网络资源。于是,客户针对这一情况,提出了新的需求:当服务器有数据更新的时候,此时客户端去主动刷新列表接口以获取最新的数据,否则不需要客户端主动去请求接口,直接显示上一次从服务器请求的数据。这样就既做到了用户每次可以看到最新的数据,而且不影响用户体验和性能。

2022-11-23 15:17:25 915 1

原创 Xcode断点调试的值均为nil

因为优化包大小时没注意,Optimization Level Debug和Release的选项均设置为Fastest了。Optimization Level Debug时设置为none (-O0)即可。

2022-09-06 09:12:28 179

原创 iOS scrollToItemAtIndexPath方法不生效

也就是说,先运行了scrollToItemAtIndexPath滑动的方法,然后再绘制cell,这样当然就看不到滑动的效果,因为调用顺序反了。所以,应该在collectionView刷新完毕之后,再去调滑动的方法。但是运行之后发现不生效,也就是没有按照预期,滑动到想要的位置。...

2022-07-21 09:21:01 700

原创 iOS闪退:Cannot form weak reference to instance (xxx) of class

闪退日志:Cannot form weak reference to instance (0x161c6ddd0) of class JYCodeLoginController. It is possible that this object was over-released, or is in the process of deallocation.这段日志大概的意思是说 JYCodeLoginController 的实例不能形成弱引用,它可能被过度释放或者正在被取消分配的过程中。...

2022-07-20 11:14:23 770

原创 iOS MJRefresh 实现无感刷新

项目开发中用了MJRefres 刷新控件,每次上拉的时候都有个菊花转,需要下拉一下才能看到下一页的数据。产品提出需求,希望列表往下拉能直接出现下一页的数据,不需要出现加载的动画和等待时间。于是着手看了一下MJRefresh的源码,发现其提供了无感刷新(自动刷新)的方法。从MJRefresh的继承图谱来看,下拉的自动刷新类为:MJRefreshAutoStateFooter。我们只需要继承这个类,然后把功能重写一下就可以实现了。自己重新创建一个类:HSWuGanRefreshFooter,继承 MJRefre

2022-07-11 10:28:11 832

原创 iOS MJRefresh 自定义刷新动画

项目开发中用了MJRefres 刷新控件,但是MJRefresh默认的加载样式感觉比较丑,产品觉得需要换个样式,弄的简洁一点。于是着手看了一下MJRefresh的源码,发现其提供了修改样式的方法。从MJRefresh的继承图谱来看,带动画的下拉刷新类为:MJRefreshGifHeader,带动画的上拉刷新类为:MJRefreshBackGifFooter。我们只需要分别继承这两个类,然后把加载动画的功能重写一下就可以实现了。自己重新创建一个类:HSRefreshGifHeader,继承 MJRefres

2022-07-11 10:26:19 1088

原创 iOS MJRefresh源码分析

MJRefresh是iOS开发中运用的最多的上拉加载更多和下拉刷新控件,是著名开发者及培训讲师李明杰老师的作品。MJRefresh中主要的类并不多,整个MJRefresh主要类的关系如下图所示:MJRefreshComponent 为整个控件的基类,其本身是一个UIView。2.2 控件的回调函数2.3 添加监听主要是对 contentOffset、contentSize、手势状态进行监听对于监听的处理:2.4 提供刷新,停止刷新接口2.5 提供子类需要实现的方法三、基础的下拉刷新

2022-07-11 10:22:54 425

原创 MySQL 基本操作

一、基本知识1、连接数据库mysql -uroot -p;2、查询当前的库 show databases;3、选择某个数据库use blogs;4、查看当前所使用数据库select database();5、创建一个新库create database db1;6、查看表中所有记录:select * from student;7、插入数据:insert into student values('1','张三',20);8、删除表drop tablbe stude

2022-05-14 22:17:23 646

原创 MySql 数据类型

##MySql学习笔记:数据类型一 、数据库的分类Mysql支持的多种数据类型主要有:数值数据类型、日期/时间类型、字符串类型。数据类型类型数值数据类型整型: tinyint smallint mediumint int bigint 浮点类型: float double 定点小数类型: decimal日期/时间类型year time date datetime timestamp字符串类型文本字符串:char varchar tinytext text medi

2022-05-14 22:15:56 300

原创 iOS 文件读写

一、沙盒沙盒是每一个iOS应用程序都会自动创建的一个文件系统目录(文件夹),而且沙盒还具有独立、封闭、安全的特点。1、沙盒机制iOS中的沙盒不仅仅是一个文件目录,TA其实更是一种安全体系TA规定了应用程序只能在为该应用程序创建的文件夹(也就是沙盒)内访问文件,不可以访问其他沙盒内的内容(iOS已经部分开放访问)所有的非代码文件都保存在沙盒中,图片、音频、视频、属性列表(plist)、sqlite数据库以及文本文件等。2、沙盒的特点每个应用程序的活动范围都限定在自己的沙盒里不能随意跨越自己的沙

2022-05-14 22:10:23 1195

原创 iOS 数组操作

一、数组去重1.1 利用字典Key不能重复的属性NSArray *testArr = @[@"1",@"2",@"3",@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9"];NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];for (NSInteger i=0; i<testArr.count; i++) { [dict setObject:testArr[i] forKey:t

2022-05-14 22:07:56 453

原创 iOS NSTimer定时器

iOS中定时器有三种,分别是NSTimer、CADisplayLink、dispatch_source,下面就分别对这三种计时器进行说明。一、NSTimerNSTimer这种定时器用的比较多,但是特别需要注意释放问题,如果处理不好很容易引起循环引用问题,造成内存泄漏。1.1 NSTimer的创建NSTimer有两种创建方法。方法一:这种方法虽然创建了NSTimer,但是定时器却没有起作用。这种方式创建的NSTimer,需要加入到NSRunLoop中,有NSRunLoop的驱动才会让定时器跑起来。

2022-05-14 22:04:14 1050

原创 iOS 视频方向修正

前言最近在开发一款视频剪辑的App发现一个奇怪的问题,用iPhone手机的相机拍摄的视频,经过剪辑之后导出视频,发现视频被自动旋转了90度。于是,顺着这个问题深入研究了一下,将研究的过程和结果记录一下。一、视频拍摄的方向与角度iOS上内置相机应用录制的mov/mp4视频会产生一个Rotation元数据,表示录制视频时摄像头旋转到了多少角度。其值一般为这四个:0、90、180或270。类似于图片文件的 Exif 信息中的Orientation元数据。Rotation元数据用于播放器确定渲染视频的方向,

2022-02-28 13:42:20 5379

原创 iOS 15 适配导航栏

App运行在iOS15之上的系统,发现导航栏的颜色设置不正确了,页面跳转的时候导航栏会出现重影。经过研究发现iOS15之后,设置系统导航栏的颜色要采用新的API: if (@available(iOS 13.0, *)) { UINavigationBarAppearance *barApp = [UINavigationBarAppearance new]; barApp.backgroundColor = kColor_Blue; barApp.shad

2022-02-14 13:45:30 1830

原创 Vue 动态添加输入框

效果图:代码:<template> <div id="dialog-container" ref="dialogContainer"> <el-dialog title="动态添加女朋友" :visible.sync="dialogVisible" width="40%"> <div class="query-detail"> <el-form ref="ruleForm" label-width="150p

2021-12-30 16:58:52 3709

原创 Vue 高级函数的使用

一、高级函数的介绍1.1 filter 函数filter函数的主要用途是对数组元素进行过滤,并返回一个符合条件的元素的数组:const nums = [10,20,30,111,222,333]let newNums=nums.filter(function(n){ return n<100})//输出:[10,20,30]1.2 map 函数map函数是对数组每个元素的映射操作,并返回一个新数组,原数组不会改变将newNums中每个数字乘2:const nums = [1

2021-12-30 15:47:26 770

原创 Vue keep-alive 组件

一、简介keep-alive是Vue提供的一个抽象组件,可以用来对组件和路由进行缓存,从而节省性能,由于是一个抽象组件,所以在页面渲染完毕后不会被渲染成一个DOM元素。(1) keep-alive 缓存路由<keep-alive> <router-view /></keep-alive>被缓存的路由,第一次进入页面的时候会调用 created() 方法,第二次进入页面时就不会再调用 created() 方法了,因为页面被缓存起来了。那么我们如果页面改动

2021-12-29 17:28:06 1025

原创 iOS 权限设置判断和跳转 - 最全最详细

一、权限设置iOS 10以后,苹果增强了对用户隐私的保护,访问照相机、相册、麦克风、定位、通讯录等,都需要在info.plist 文件中添加权限,而且少一个都不行。根据需要添加,项目中使用了什么,就添加对应的权限。权限字段相册使用权限Privacy - Photo Library Usage Description编辑相册权限Privacy - Photo Library Additions Usage Description相机权限Privacy - Camera

2021-12-29 11:46:17 4220

原创 Mac生成和查看SSH Key

从 git 上拉取或者提交代码每次都需要输入账号密码,这样很麻烦。我们可以在电脑上生成一个 ssh key,然后把ssh key添加到 git 中,就可以不用每次去输账号密码了。下面就介绍一下怎么在自己的 Mac 中生成和查看 ssh key。

2021-12-20 09:01:02 11265

substrate.h

用Theos 编写代码的时候,发现’MSHookIvar’这个编译不通过,找了一圈不知道是什么原因,后面发现是少了一个substrate.h 文件。下载这个文件,然后复制到你工程目录下面。

2017-05-23

ViewPagerFragmentTab

主要介绍ViewPager+Fragment的方式实现Tab的效果,这种方式点击tab上的按钮可以切换界面,左右滑动也可以切换界面。

2017-03-31

FragmentTab

主要介绍用Fragment的方式实现Tab的效果。

2017-03-31

ViewPagerTab

安卓tabbar,用viewpager的方式实现tabbar的切换。

2017-03-30

iOS Tabbar上添加按钮

iOS tabbar中间添加按钮

2017-03-07

DragBigger

类似QQ空间下拉图片变大的效果

2016-11-03

ThirdpartyLogin(QQ微信新浪微博登录)

第三方登录(QQ微信新浪微博登录)

2016-11-02

ThirdpartyLogin(QQ微信登录)

微信登录,QQ登录

2016-11-02

ThirdpartyLogin

第三方登录-QQ登录

2016-11-02

环信SDK3.2 Chat 文件

环信SDK3.2 Chat 文件

2016-10-31

iOS 图片轮播

iOS图片轮播、点击事件,显示标题

2016-10-26

ios UICollectionView

ios UICollectionView的使用

2016-08-16

Swift UIAlterViewController

Swift UIAlterViewController

2016-04-14

iOS 搜索框

UISearchController 搜索框,适用于iOS8.0以后的版本。

2016-03-30

用plist保存账号密码

用plist保存账号密码

2016-03-28

自定义PickerView

自定义一个pickerView,解决如下问题: 1、添加“确定”和“取消”按钮; 2、增加向上弹出和向下消失动画; 3、选中某行后,触发一个事件;

2016-02-29

自定义DatePicker

封装了一个日期选择器,解决两个问题: 1、点击textField,键盘弹出和日期选择器弹出的逻辑处理; 2、同一个界面需要多次用到日期选择器时,判断点击的textField;

2016-01-18

环信3.0单聊集成chat文件

环信3.0单聊集成chat文件,已经将无关代码注释掉,可直接使用。

2015-12-13

环信单聊集成chat文件

环信单聊集成chat文件,把不需要的代码已经注释好,可直接使用。

2015-12-13

环信3.0UI集成文件

环信3.0集成需要添加的UI文件,另外自行导入环信的SDK

2015-12-13

环信3.0需添加的文件

环信SDK3.0集成需要添加的一些文件,全部都整合在一起了,把不需要的代码也注释好了。下载后,拖入你的工程可以直接用。

2015-12-11

iOS 抽奖转盘S

绘制直线、三角形、圆弧、文字、图片 等。

2015-11-27

iOS 抽奖转盘

用iOS做的一个抽奖转盘的demo,可以用于抽奖。

2015-11-20

iOS 网络类型

用于判断设备当前的网络类型,wifi、3G、4G等。

2015-10-19

iOS支付宝SDK

iOS支付宝SDK,包含开发文档和演示的DEMO

2015-10-10

iOS 广告轮播

基本的需求点: 1. 支持循环滚动; 2. 支持加定时器,自动滚动; 3. 支持自定义是否要显示标题; 4. 支持自定义pageControl的位置(左、中、右三种方式); 5. 支持自定义标题的位置(左、中、右三种方式); 6. 支付广告轮播图片的点击,可以点击跳转到你所指定的界面; 7.只有一张图片时,自动隐藏pageControl;

2015-09-22

Segment带滑动条效果

Segment带滑动条效果

2015-08-11

iOS下载图片显示进度

iOS下载图片,并且显示下载的实时进度,下载完成之后显示图片。

2015-07-28

单例反向传值

iOS传值,iOS单例反向传值,将B界面的值传到A界面。

2015-07-20

block反向传值

iOS传值,将B界面的值传到A界面

2015-07-20

iOS Notification反向传值

iOS传值,用Notifaction反向传值,将B界面的值传到A界面。

2015-07-17

iOS Notification正向传值

iOS传值,用通知Notifaction正向传值。

2015-07-17

实现上图标下文字,左图标右文字,右文字左图标设置的按钮

在项目开发中,经常需要用到按钮,系统默认的按钮是图标在左边,标题在右边。但往往实际情况是多变的,有时候图标在右边、有时候图标在上面,这个时候系统的按钮往往无法满足需求,所以我们需要自定义按钮来满足需求的开发。下面提供两种方法来实现按钮图标和文字自定按钮。

2022-11-29

iOS列表自动刷新(结合websocket实现,简单实用)

要实现列表做到服务器有数据更新时去主动请求接口,没有数据更新时则不请求接口,关键是要知道服务器什么时候数据更新了,需要服务器主动告知客户端某个列表的接口有数据更新了,当用户切换到此列表时,需要客户端主动去请求接口,获取最新的数据。要实现这一功能,采用websocket是最合适的。websocket能保持服务器和客户端的通信,当服务器有数据更新了,通过websocket告知用户需要刷新列表了。

2022-11-23

MJRefresh无感刷新

MJRefresh无感刷新 项目开发中用了MJRefres 刷新控件,每次上拉的时候都有个菊花转,需要下拉一下才能看到下一页的数据。产品提出需求,希望列表往下拉能直接出现下一页的数据,不需要出现加载的动画和等待时间。于是着手看了一下MJRefresh的源码,发现其提供了无感刷新(自动刷新)的方法。

2022-07-11

MJRefresh自定义动画

MJRefresh自定义动画 项目开发中用了MJRefres 刷新控件,但是MJRefresh默认的加载样式感觉比较丑,产品觉得需要换个样式,弄的简洁一点。于是着手看了一下MJRefresh的源码,发现其提供了修改样式的方法。

2022-07-11

鸿蒙网络请求Demo.zip

鸿蒙网络请求

2021-08-04

libstdc.zip

Xcode缺少libstdc++的解决方案

2021-05-07

SourceTree

完美破解版,找了很久才找到,亲测可用。 完美破解版,找了很久才找到,亲测可用。 完美破解版,找了很久才找到,亲测可用。

2017-09-09

iOS逆向非群主@所有人

微信中只有群主才有@所有人的权限,下面用iOS逆向实现一下非群主@所有人的功能

2017-05-17

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除