自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

H.A.N的博客

Objective-C、Swift、热更新、APICloud跨平台开发、Flutter学习实践指南、性能优化实践指南

  • 博客(343)
  • 资源 (26)
  • 收藏
  • 关注

原创 Flutter 获取应用缓存和清理缓存

Flutter 获取应用缓存和清理缓存  在 Android 和 iOS 中,都有需要获取应用缓存和清除应用缓存的功能,那么在 Flutter 里面应该怎么做呢?  要想获取到应用缓存,我们就必须找到用来装缓存数据的文件夹,所以这里我们需要引入 path_provider , 用来获取 Android 和 iOS 的缓存文件夹,然后再根据文件循环计算出缓存文件的大小。  首先,我们先简单介绍...

2019-11-12 08:55:22 8529 6

原创 APICloud 自定义弹窗实现

  在大家的项目里应该会出现一些弹窗选择,你可能用了 confirm、prompt,也可能用了 dialogBox,使用这些模块总是不错的,但也许其样式满足不了你的需求。在这我给大家分享一个简单的弹窗实现,主要利用 frame 实现。  先上个效果图:  点击遮照部位可以关闭弹窗。  这个实现起来非常简单,总共就两个步骤:  第一步:打开一个全屏的 frame,并设置半透明api.op...

2019-08-30 14:25:37 4014 2

原创 为什么要使用组件化???

什么是组件化?  在看了很多其他的方案之后,首先对组件化思想上有一个小分歧。我认为很多人对于 iOS 中组件化的理解其实是有误区的。我刚工作的第一年就是在做 Flex 开发,其中就有很多组件化的思想,加上最近在用 Vue 做 web 项目之后,更为意识到大家在 iOS 开发上说的组件化有点不合适。  首先我认为组件是一个相对比较小的功能模块,不需要与外界有太多的通信,更不能依赖其他第三方,这一...

2019-08-21 14:09:29 1626

原创 Flutter 命名路由及传值

命名路由是区别于基本路由的一种存在,方便于大型项目中路由的统一管理,现在,在前面基本路由的项目基础上实现实现命名路由。使用步骤路由配置  命名路由在使用前,需要在根组件main.dart中进行简单的配置(前面是页面路径,后面是页面中的组件名称):main.dart 主要代码:import 'package:flutter/material.dart';import 'page...

2019-08-13 08:39:38 1923 2

原创 APICloud Studio 2 新建项目报错:检出失败和解决办法

报错信息:Can’t locate SVN/Core.pm in @INC (you may need to install the SVN::Core module) (@INC contains: /usr/local/git/lib/perl5/site_perl/5.18.2/darwin-thread-multi-2level /usr/local/git/lib/perl5/site...

2019-06-10 11:53:49 2965

原创 程序员专属小情话,哎呦,不错哦!!!

中学还没学习计算机的时候,在小城市里都还没见过电脑。那个时候觉得敲键盘很帅很神秘

2019-03-29 10:24:11 11666 7

原创 零基础研发微信小程序遇到的坑总结(持续更新)

1、小程序在Mac导入时打不开?解决:目录结构里面有中文目录导致的2、scroll-view列表中item点击事件设置.wxml添加:<scroll-view scroll-y = "{{true}}" style=&am

2019-01-23 15:08:22 544

原创 iOS 底层Runloop的详解

有人做了两年多的iOS开发,对iOS和Objective-C深层次的了解还十分有限,大多还停留在会用API的级别,这是件挺可悲的事情。想学好一门语言还是需要深层次的了解它,这样才能在使用的时候得心应手,出现各种怪异的问题时不至于不知所措。废话少说,进入今天的正题。RunLoop 的概念一般来讲,一个线程一次只能执行一个任务,执行完成后线程就会退出。如果我们需要一个机制,让线程能随时处理事...

2019-01-17 14:38:25 396

原创 iOS 最简单的 Runtime 教程(适合新手入门)

本篇主要是从新手的角度出发,介绍 Runtime 的原理、常用方法、应用场景等。一、Runtime 是什么       在 C 语言中,将代码转换为可执行程序,一般要经历三个步骤,即编译、链接、运行。在链接的时候,对象的类型、方法的实现就已经确定好了。  &a

2018-12-21 14:17:17 610

原创 iOS 实现类似支付宝的进入后台模糊效果

今天在用手机后台切换程序时突然发现支付宝的页面自动模糊,因此对这一细节感到十分惊喜,想知道为什么要这么做?有什么作用?如何实现?之后查了一些资料,很多金融类的App都实现这样效果来增加安全,代码很简单,在AppDelegate中实现。很多细节可以根据场景来进行添加,比如判断是否存在用户登陆,没有用户信息就不遮盖了…代码实现:AppDelegate.m 中:@interface AppDe...

2018-12-17 16:24:04 4373 1

原创 iOS 性能优化之教你使用Allocations分析内存分配

AllocationsAllocations用来分析静态内存分配。Demo项目Demo AppDemo是一个简单的图片应用:首页只有一个简单的入口;次级页面会读取本地图片,加滤镜,然后按照瀑布流的方式显示出来;第三个页面提供大图显示;运行代码:点击Photos -> 进入main -> 点击一张图,进入详情页 -> Pop直到回到第一个页面,重复这段操作,从X

2018-11-19 11:34:19 1119

原创 iOS 漫谈App瘦身

前段时间部门开需求会,砍掉了应用中的部分需求。这简直就是给应用瘦身的良机!这个时候测试又提出来:安卓端的app在应用市场的包只有26M,而iOS端的app在App Store上却有88M。会后,我就找来安卓的测试机,对比了百度、支付宝、微信、京东、新浪和抖音几个App在应用市场和App Store上的大小,数据如下:显而易见,相同的应用,安卓端的应用安装包远小于iOS端。究其原因,笔者虽也查...

2018-11-19 09:13:44 650

原创 iOS 性能优化之图片加载和处理

前言本文基于WWDC2018-Image and Graphics Best Practices,对图片加载和处理的思考和总结。本文不是WWDC翻译,如果需要了解视频内容可以点击上面的链接观看。正文图片的显示分为三步:加载、解码、渲染。通常,我们操作的只有加载,解码和渲染是由UIKit进行。什么是解码?以UIImageView为例。当其显示在屏幕上时,需要UIImage作为数据源。...

2018-11-08 11:01:39 1656

原创 iOS 所有线程 Autorelease 对象的内存管理

最近面试,然后不管是应届生还是工作两三年的高级工程师都对下面这几个问题比较懵逼,可能是开发中用到的不多,在这里浅浅的讨论下:Autoreleasepool 与 Runloop 的关系ARC 下什么样的对象由 Autoreleasepool 管理子线程默认不会开启 Runloop,那出现 Autorelease 对象如何处理?不手动处理会内存泄漏吗?针对第一个问题,比较容易理解,可以看一...

2018-10-11 08:36:50 1006

原创 iOS 网络请求优化之取消请求

页面返回的时候,将网络请求取消同一个请求多次请求时,短时间忽略相同的请求同一个请求多次请求时,取消之前发出的请求发送的请求,多次尝试并确保成功最近发现很多网络请求都有可以优化的地方,虽然开发和测试都没有发现问题,但是可以让代码更加的优雅。想到了有四个方面可以优化,亲测有效。1. 页面返回的时候取消网络请求在一个界面进行多个请求的时候,而有可能用户马上点击了返回按钮,那么如果是...

2018-09-30 10:06:42 2585 2

原创 iOS 谈一谈自适应Cell的高度缓存

系统如何计算的自适应高度?系统计算的行高会不会被缓存?如何缓存?前几天读文档的时候发现一对方法- (CGSize)systemLayoutSizeFittingSize:(CGSize)targetSize NS_AVAILABLE_IOS(6_0); - (CGSize)systemLayoutSizeFittingSize:(CGSize)targetSize withHoriz...

2018-09-28 17:46:43 881

原创 iOS 性能优化篇

苦逼周末加班,无心干活,写一篇文章打发时间。先来谈谈CPU和GPU在屏幕成像的过程中,CPU和GPU起着至关重要的作用CPU( Central Processing Unit, 中央处理器)就是机器的“大脑”,也是布局谋略、发号施令、控制行动的“总司令官”。CPU的结构主要包括运算器(ALU, Arithmetic and Logic Unit)、控制单元(CU, Cont...

2018-09-16 14:22:22 498

原创 iOS 性能优化之页面加载速率

前言之前搜罗了网上很多关于iOS性能优化方面的资料 ,本人和我的小伙伴们也用了一些时间针对自己的App进行了App的启动速率、页面的加载速率和 页面的帧率方面进行了优化,所以结合了理论和实践,把我们在实践中主要踩过的坑和需要注意的东西 ,总结了一下,希望可以帮到正在准备进行App的性能优化的你。今天主要讲一下App的页面加载速率的优化。目的为了找到真正使我们的App缓慢的原因,我们...

2018-09-14 15:42:22 2275

原创 iOS 代码瘦身实践(二)

一、分析当前ipa的组成一般一个ipa会包含:1. 资源文件本地文件:数据、配置、数据库等等字体文件图片资源2. 源代码通过生成linkmap文件,分析源代码生成的编译文件的大小。在Build Settings中Write Link Map File设置为Yes (记住release时候不要设置为Yes)。编译之后会在build目录中生成两个LinkMap文件:...

2018-09-04 09:22:52 352

原创 iOS 架构思想UIViewController的瘦身之路(一)

前言这篇文章里会涉及如下几个方面: 1、代码的组织结构,以及为何要这样写。 2、那些场景适合使用子控制器,那些场景应该避免使用子控制器? 3、分离UITableView的数据源和UITableViewDataSource协议。 4、MVVM的重点是ViewModel,不是响应函数式。 5、MVVM中,ReactiveCocoa或RXSwift实现数据绑定的带来...

2018-08-27 09:18:15 950

原创 iOS 网络性能优化之路

一、度量网络性能1.网络带宽用于描述无线网络性能的最常见度量指标就是带宽。在数字无线通信中,网络带宽可以描述为两个端点之间的通信通道每秒钟可以传输的位数。现代无线网络所能提供的理论带宽是很高的。不过请记住,运营商与网络设备提供商引用的带宽数字常常是该项技术的理论最大值,网络设备使用的实际带宽可能与这个最大值之间存在很大的偏差。2.网络延迟度量网络性能的第2个因素是网络延迟,...

2018-08-02 14:17:36 2960

原创 iOS App启动+广告思路

需求很多App(如淘宝、京东、美团、饿了么等)在启动图加载完毕后,还会显示几秒的广告,一般都有个跳过按钮可以跳过这个广告,有的App在点击广告页之后还会进入一个广告页面,点击返回进入首页。虽然说这个广告页面对用户体验来说并不是很好,但是如果真的有这个需求,我们还是要想办法去开发,至少这比内嵌广告要友善的多。今天我们就来开发一个广告页面,效果如下。思路广告页加载思路。广告页的内容要实时...

2018-07-06 15:09:58 3349

原创 iOS 动画专题(UIView二维形变动画与CAAnimation核心动画)

1. iOS动画总的来说,从涉及类的形式来看,iOS动画有:基于UIView的仿射形变动画,基于CAAnimation及其子类的动画,基于CG的动画。这篇文章着重总结前两种动画。2. UIView动画设置UIView形变动画有两种常见用到的属性,.frame,.transform,所以有的人也可以分别称之为:① frame动画 ② transform动画这两种动画只需要在...

2018-07-05 17:08:50 1470

原创 iOS 2018最新搭建 React Native 开发环境教程

一、ReactNative简介 ReactNative是移动端目前最热的框架之一, 着力于提高多平台开发的开发效率 —— 仅需学习一次,编写任何平台。(Learn once, write anywhere)。Facebook 已经在多项产品中使用了React Native,并且将持续地投入建设React Native。React Native 可以通过更新远端JS,直接更新ap...

2018-06-09 14:03:13 2069

原创 iOS 项目启动时间优化之pre-main 时间

苹果为查看 pre-main 提供了支持,具体配置如下,配置的 key 为:DYLD_PRINT_STATISTICS。然后再运行项目,Xcode 就会在控制台输出这部分 pre-main 的耗时:Total pre-main time: 2.2 seconds (100.0%) dylib loading time: 1.0 seconds (45.2%)re

2017-12-05 14:58:03 4356

原创 Flutter - TabController监听index

简单一个小例子:class _RankPageState extends State<RankPage>{ final List<Tab> titleTabs = <Tab>[ Tab( text: '全部', ), Tab( text: '待付款', ), Tab( text: ...

2020-03-20 09:11:30 8330 1

原创 iOS Error Domain=NSCocoaErrorDomain Code=4099

Xcode 控制台报错:[Client] Sending selectors failed with: Error Domain=NSCocoaErrorDomain Code=4099 "The connection to service named com.apple.commcenter.coretelephony.xpc was invalidated." UserInfo={NSDeb...

2020-01-20 09:57:01 10241 1

原创 iOS Xcode 提示 “This app could not be installed at this time.”

好好运行的项目,第一次模拟器安装没问题,第二次在安装提示错误:This app could not be installed at this time.首先清理模拟器第一步:点击模拟器,选择Hardware -> Erase All Content and settings第二步:command + shift + k 清理编译第三步::command + option + ...

2020-01-19 11:12:01 2348

原创 Flutter 报错:The 'Pods-Tatget' target has transitive dependencies that include static binaries

  最近做一个 Flutter 电商项目,编译 pod install 时报错 :“The ‘Pods-Tatget’ target has transitive dependencies that include static binaries”。直接上解决办法:  出现这个问题的主要原因是开启了 use_framework! 选项,开启这个选项的时候,pods 集成的所有的库都会以 dyn...

2020-01-09 08:40:56 2867

原创 解决 Flutter showBottomSheet 设置高度没有作用的?

  最近在做一个电商项目,其中规格视图 Flutter 的底部弹窗,但是发现 showBottomSheet 在弹出的时候最高高度始终限制在了屏幕的二分之一的位置,再往高设置仍然还是一半高度,但是我们的弹窗设计稿是占据屏幕三分之二的位置的,显然 Flutter 的这个限制是无法满足需求的。  有问题的截图如下:怎么去解决这个问题???  当时百度 Google了两个小时,发现了 Flutt...

2019-12-13 17:27:38 1235

原创 Flutter 取两位小数 不要四舍五入的方法

  如图:  打印结果:  我们知道 toStringAsFixed() 这个方法会在保留小数的基础上对末位进行四舍五入。所以我们需要多取 1 位再进行截取,防止第二位四舍五。  为什么要进行 toStringAsFixed() 这个方法呢,原因是我们要求保留两位小数,假如给的数字是 100,那么就需要去补充小数点后的两位小数 0,即 100.00,所以要用到这个方法去保留。...

2019-12-11 10:01:48 12604 2

原创 Flutter Clipboard 粘贴板使用

  在 Flutter 提供了 Clipboard 跟 ClipboardData 用来操作系统的复制粘贴。  源码如下:/// 设置要复制到粘贴板中的内容@immutableclass ClipboardData { /// Creates data for the system clipboard. const ClipboardData({ this.text }); ...

2019-12-09 09:41:24 1220

原创 Flutter 取消按钮水波纹的方法

  因为 InkWell 继承自 InkResponse,因此这里只以 InkResponse 来进行分析。第一种方法:  在 InkResponse 外围添加 Container,然后在 Container 中添加 color 属性,例子如下:return Scaffold( appBar: AppBar( title: Text("title"), ), ...

2019-12-06 10:47:51 3998

原创 iOS 微信支付(1.8.6) -- Universal Links 创建

  今天项目接入微信支付,在更新微信支付sdk(1.8.6)的时候,用到一个Universal Links,之前没有接触过,于是就简单的记录一下配置过程。在 iOS9 之前,要在浏览器中唤醒 App,我们通常使用 scheme。这种方式需要提前判断系统中是否安装了能够响应此scheme 的 App,并且这种方式在微信被禁用。目录:一 、官方解释二、具体操作三、微信支付配置  Univ...

2019-12-03 13:51:29 1502

原创 Flutter 解决依赖版本冲突

前言  Google 推出 Flutter 这样一个新的高性能跨平台(Android,iOS)快速开发框架之后,被业界许多开发者所关注。我在接触了 Flutter 之后发现这个确实是一个好东西,好东西当然要和大家分享。  今天要跟大家分享的是如何解决 Flutter 中依赖版本冲突。为什么会存在版本依赖问题  我们在开发 Flutter 项目中,常常会依赖第三方库。Flutter 依赖项越...

2019-12-02 16:47:42 2323

原创 Flutter 隐藏键盘

直接上代码 : TextEditingController _contentController = new TextEditingController(); FocusNode _contentFocusNode = FocusNode();Container( padding: EdgeInsets.fromLTRB(0.00, 5.00, 0.00,...

2019-11-22 08:30:28 1180

原创 Flutter 相册选择图片和相机拍照

Flutter 获取相册中的图片和用相机拍照  在原生开发中,拍照及从图库选择图片是非常常见的需求,而且原生的图片选择第三方库也有很多并且很完善了。Flutter 也给我们提供了好用的图片选择插件,iOS 和 Android 都可以使用!使用方法  首先添加依赖:  在 pubspec.yaml 加入 image_picker 的依赖,然后 ctrl + s 保存即可。在 Flutter...

2019-11-21 08:31:50 1762

原创 Flutter 倒计时

Flutter 倒计时写一个倒计时定时器听起来真的好简单,然而在 Flutter 里面写这个东西还是挺坑的。原本以为创建一个 Timer 就一切都搞定了,但并没办法实时获取倒计时的进度。void countdown(){ Timer timer = new Timer(new Duration(seconds: 10), () { // 只在倒计时结束时回调 }...

2019-11-13 08:28:59 822

原创 git 常用命令使用总结

git 更新远程分支git remote update origin -pgit 查看分支git branch -agit 本地创建拉去远程分支:git checkout -b 【本地分支名】 【远程分支路径】比如:git checkout -b shareLogin origin/shareLogin...

2019-10-24 13:45:01 248

原创 Flutter 和 iOS 中 .gitignore 文件内容

Flutter 和 iOS 混编,其中 .gitignore 文件内容:# Built application files*.apk*.ap_*.aab# Files for the ART/Dalvik VM*.dex# Java class files*.class# Generated filesbin/gen/out/# Gradle files.gra...

2019-10-23 14:12:51 446

IDEA for mac汉化(2018.2)

IDEA for mac汉化版本2018.2;IDEA for mac汉化版本2018.2

2018-11-30

IDEA for mac汉化(2016.3)

IntelliJ IDEA for mac汉化,汉化版本2016.3。更新时间:2016-03-19 22:46:00

2018-11-30

仿美团、饿了么加入购物车以及加入购物车动画

仿美团、饿了么加入购物车以及加入购物车动画;可自定义话动画样式

2018-11-19

一份走心的JS-Native交互电子书

一份走心的JS-Native交互电子书,能够帮助更多的同学掌握 Hybrid 在 iOS 中的应用。

2018-11-19

带警示效果的TextField、改变光标起始位置

带警示效果的TextField、改变光标起始位置;自由定制;

2018-11-19

排序按钮封装、升序、降序

排序按钮封装、升序、降序;按钮一共有三种状态:非选中、选中升序、选中降序。

2018-11-19

几代码实现导航栏透明渐变、实现TabBar中间凸起

几代码实现导航栏透明渐变、实现TabBar中间凸起;可自定义

2018-11-19

实现支付宝语音收款功能、串行语音播报

语音播报。 语音播报需求运用最为广泛的应该是收银对账了,就类似于支付宝、微信、收钱吧等的收款语音提示一样。

2018-11-19

支持控制台‘po’打印,打印中文字典/数组,支持格式化

支持控制台‘po’打印,打印中文字典/数组,支持格式化;

2018-11-19

弹框大全,代理,block等实现

弹窗大全实现思路:1.通过代理方法回调的弹窗;2.通过block回调封装的弹窗;3.通过xib创建封装的弹窗;4.新建控制器作为弹窗

2018-11-19

动手搭建一个简单的区块链

区块链就是一个不可变、有序的链(chain)结构,链中保存着称之为块(block)的记录,这些记录可以是交易,文件或是任意你想要的数据。其中重要的是它们通过哈希链接在一起。

2018-11-19

数组越界处理,Runtime处理,分类处理

数组越界处理、Runtime处理、分类处理,使用不同的方法

2018-11-19

启动加载广告思路、广告View封装

启动加载广告思路、广告View封装;可自定义设置广告。

2018-11-19

OC与JS的交互(WKWebview-MessageHandler实现)

iOS 中实现加载 web 页面主要有两种控件,UIWebView 和 WKWebview,两种控件对应具体的实现方法不同。WKWebView是苹果公司在iOS8系统推出的,这里我们主要概述WebKit中更新的WKWebView控件的新特性与使用方法。

2018-11-16

使用iconfont图标

在iOS中使用iconfont图标替换原始切图,减少IPA大小。

2018-11-16

搭建App框架(MVVM+RAC+路由)

项目使用了ReactiveCocoa框架,实现了MVVM架构,使用MVVM架构主要目的是分离视图(View)和模型(Model)。

2018-11-16

一个UICollectionView轻松搞定顶部悬停效果、顶部悬停效果、collectionView达到悬停效果

一个UICollectionView轻松搞定顶部悬停效果、顶部悬停效果、collectionView达到悬停效果

2018-11-16

3D卡片轮播,卡片轮播,无限轮播,DIY

参考UITableView的UITableViewDataSource和UITableViewDelegate两个方法实现;支持五险轮播,可以加载本地图片,也可以加载网络图片,可以根据自己的需求自定义。

2018-11-16

仿某宝,自定义选择地址

自定义选择地址封装,仿某宝。根据需求定制化修改源代码

2018-07-19

自定义索引控件封装

自定义索引控件,可以根据自己的需求修改源代码。定制化

2018-07-19

Base64加密解密封装

自定义密码表,Base64加密解密代码封装,源代码可以进行自定义

2018-07-19

UILabel内容中某个文字添加点击事件

简单方便的给UILabel内容中某几个文字添加点击事件,实现定制要求

2018-07-19

简单代码实现跑炫酷马灯效果

简单实现炫酷的跑马灯,可自定义效果。修改源代码定制

2018-07-19

一行代码实现星级评价

超简单的实现星级评价,简单封装,简单的实现。可以随心修改源代码

2018-07-19

隐式切换主控制器代码

一行代码,可以巧妙切换主控制器,实现你想要的效果,不信你可试试

2018-01-31

倒计时封装

功能强大的短信倒计时,一行代码调用,方便简单解决问题

2018-01-31

空空如也

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

TA关注的人

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