- 博客(20)
- 收藏
- 关注
原创 ios动画原理 modelLayer和presentationLayer以及点击交互
ios动画原理 modelLayer和presentationLayer以及点击交互我们知道,iOS的动画,和其对应的layer有关。之前在开发的过程中碰到一个问题,那就是,在一个视图的动画过程中,这个视图view和Layer的frame是怎么变化的?1 动画过程中frame的变化为了研究动画过程中,view和Layer的frame变化,做了简单的动画打印测试,效果如下:由结果可知,在UIView动画的回调中添加打印,只会打印一次,且打印的是最终的view和Layer 的位置,这显然不是想要的结
2020-11-24 09:55:56
1352
原创 ios性能优化-卡顿优化和耗电优化
ios性能优化-卡顿优化和耗电优化1 卡顿产生的原因及优化产生卡顿是由于屏幕的成像显示导致,而屏幕画面的显示离不开手机的CPU和GPU;CPU:(Central Processing Unit 中央处理器)对象的创建和销毁,对象属性的调整,布局的计算,文本的布局计算和排版,图片格式的转换和解码,图像的绘制(Core Graphics)GPU: (Graphics Processing Unit 图形处理器)纹理的绘制iOS是双帧缓存机制,有前帧缓存,后帧缓存1.1屏幕成像显示的过程是:
2020-11-24 09:54:02
565
1
原创 iOS 启动优化和安装包瘦身
iOS 启动优化和安装包瘦身1 启动优化在iPhone的启动方式中,分为冷启动和热启动两种方式:1、冷启动(Cold Launch):从零开始启动APP ,需要系统新创建一个进程进行启动,这是一次完整的启动;2、热启动(Hot Launch):APP已经在内存中,在后台存活着,再次点击直接打开我们一般说的启动优化是指: 冷启动时的优化;要达到优化启动的目的,就需要知道在APP启动的时候,有哪些流程,做了哪些事情;APP的启动过程是从:点击应用icon图标,到启动图展示,再到首页展示完成的过
2020-11-24 09:51:41
643
原创 iOS KVO实现原理和FBKVOController的使用
iOS KVO实现原理和FBKVOController的使用我们通常需要监听一个对象的某个属性值的变化,来动态的修改UI或者展示;这时候KVO就排上了用场,KVO是苹果专门提供的用于监听某个对象的属性变化的方法;例如:要监听一个person对象的属性age值的变化,实现步骤如下;原文链接1.系统KVO的使用1、 给对象添加一个observer:- (void)viewDidLoad { [super viewDidLoad]; self.person1 = [[YYPerso
2020-11-24 09:49:42
415
原创 iOS内存管理-引用计数及autorelease
iOS内存管理-引用计数及autorelease学习了好久的iOS内存管理,一直是断断续续的,现在有时间找了个机会总结了一下,有时候时间久了好多知识点就会遗忘,希望能将这些点记下来,多看几次。原文链接前言:虚拟内存移动设备的内存资源是有限的,当App运行时占用的内存大小超过了限制后,就会被强杀掉,从而导致用户体验被降低。所以,为了提升App质量,开发者要非常重视应用的内存管理问题。移动端的内存管理技术,主要有两种:GC(Garbage Collection,垃圾回收)的标记清除算法;Ap
2020-11-24 09:46:20
520
1
原创 微信小程序:自定义组件-自定义导航栏,动态适配高度,数据传递
1. 自定义组件在微信小程序的开发中,经常需要在不同的地方使用一些相同的组件,这些组件的样式,数据,以及点击事件都是相同的,所以,可以微信提供了自定义组件的方式,可以将我们经常使用的组件封装起来,可以使得开发效率更高,让我们对于小程序的开发更加的深刻.自定义组件官方文档新建一个组件对应以下几个步骤:新建一个专门用于存放组件的文件夹,可以命名为cmps(命名可以随意)在cmps文件...
2020-05-06 20:48:38
1400
原创 微信小程序:九宫格列表,if条件渲染及本地数据缓存(仿XX评分首页)
本文主要是小程序基础知识学习,这次主要是学习了网络请求数据,以及基础样式类似九宫格的滑动列表实现.原文链接:原文链接1. 顶部导航栏搜索框的实现顶部导航栏底色为绿色,有一个白色的搜索框以及搜索图片,搜索文字等.<view class="header"> <view class="searchwrapper"> <image ...
2020-04-20 20:35:01
753
原创 微信小程序:获取经纬度,逆地理编码获取城市
1. 获取用户当前所在城市信息在开发的时候经常需要获取用户当前所在的位置信息,比如省市,邮编,附近的酒店,影院等,这时候就需要通过小程序自带的方法和:通过微信小程序wx.getLocation接口获取用户当前位置经度和纬度;通过百度地图逆地理API,将获取的经度和纬度转化为城市名称;1.1 获取定位信息(经度和纬度)获取用户位置前,需要用户允许,也就是需要弹出弹窗获取用户权限,需要在...
2020-04-10 19:17:49
1122
原创 微信小程序仿写豆瓣评分我的页面
微信小程序仿写豆瓣评分我的页面搭建豆瓣评分我的页面,先在pages文件夹下创建pages,得到4个文件,在这4文件中来实现界面的搭建;原文链接1.头部header模块的搭建头部模块的搭建比较简单,主要是一个背景图片和一个居中的按钮;按钮的阴影效果: box-shdow图片的填充: imageaspectFill: 保持长宽比, 拉伸到最长的边填充完全 (拉伸以后会...
2020-03-17 22:37:39
1627
原创 微信小程序环境搭建,flex布局及仿豆瓣登录界面
1. 开发环境的搭建1.1 小程序开发与网页开发的差异网页开发中的渲染线程和脚本线程是互斥的,长时间的脚本运行可能会导致页面失去响应网页开发者可以使用到各种浏览器暴露出来的 DOM API,进行 DOM 选中和操作在小程序中,页面渲染和业务逻辑是分开的,分别运行在不同的线程中逻辑层运行在 JSCore 中,并没有一个完整浏览器对象,因而缺少相关的 DOM API 和 BOM API因...
2020-03-10 16:03:33
660
原创 Flutter项目(4)之仿微信聊天界面
1 创建网络仓库和假数据接口创建仓库链接创建接口:返回值是array,生成规则可以为50,表示一次返回50条数据;点击前面的+号,可以返回每条数据的具体值,比如image_url;网络头像链接,每个头像的结尾数字值不一样,代表不同的图片,可以使用生成随机数字的语法来生成不同的图片,根据mock.js语法,加入**@natural(10,70)**,代表生成10-70之间的随机数;...
2020-03-03 19:03:29
1721
原创 Flutter项目(3)之仿写微信通讯录界面
1 导航栏按钮的添加导航栏 appBar 使用AppBar()方法创建;主要用到的控件属性如下:title:导航栏标题/// The primary widget displayed in the app bar. /// /// Typically a [Text] widget containing a description of the current contents /...
2020-02-26 18:05:29
2366
原创 Flutter项目(2)之微信我的界面,圆角处理等
1. 我的界面的布局构思和模块我的界面也主要是由一个ListView构成,**注意:**右上角的相机图标是一个悬浮按钮,不随ListView的滑动而滑动;所以主体用一个Stack布局,使得相机按钮悬浮在ListView的右上角;重点是第一个cell的布局,圆角等处理:2. 代码梳理代码示例:import 'package:flutter/material.dart';import...
2020-01-22 10:44:47
761
原创 Flutter项目(1)之搭建微信发现界面及点击跳转
1. 发现界面的构成发现页面的构成比较简单,是一个简单的ListView构成,所以需要创建一个ListView以及封装一个ListViewCell;效果如下:1.1 ListViewCell的封装创建一个discover_cell.dart文件,这个cell是一个有状态的控件,在点击的时候背景颜色会变黑;import 'package:flutter/material.dart';...
2020-01-21 15:36:50
841
原创 Flutter 本地图片配置和使用,添加启动图和Icon
#Flutter 本地图片配置和使用,添加启动图和Icon1.配置启动图和Icon在Flutter开发中,Android和iOS对应的图片资源要放到对应的资源文件夹中,有一定的共同点,也有不一样的地方:1.1 iOS图片配置在iOS中,直接在Assets中拖入对应尺寸的Icon和LaunchImage即可,运行效果就不展示了。1.2 Android 图片配置在Android中,也是需...
2020-01-21 11:30:14
2014
原创 Flutter 创建底部Tabbar与子控制器,去除底部点击动画效果
Flutter 创建底部Tabbar与子控制器,去除底部点击动画效果1. 底部Tabbar的创建底部tabbar的创建和实现使用的是BottomNavigationBar()函数来创建的,传入一个Items数组,里面存放的是BottomNavigationBarItem元素,类似于iOS,BottomNavigationBar常见属性:type:tabbar样式,默认为白色不显示;f...
2020-01-19 21:58:04
4938
原创 Flutter 布局Layout,富文本与状态管理State
Flutter 布局Layout,富文本与状态管理State1. 普通文本Flutter中普通文本使用Text()函数创建,常见的属性如下:textAlign: 文本位置enum TextAlign {left,right,center,justify,///拉伸以软换行符结尾的文本行,以填充其宽度容器。以硬换行符结尾的行朝[start]边缘对齐。start, ///在容器...
2020-01-17 18:13:18
341
原创 Flutter环境配置&基本语法&如何使用库
Flutter环境配置&基本语法&如何使用库1、flutter基本了解笔记开始,先贴出几个学习flutter的官方链接: flutter官网:链接 flutter中文网:链接 github网址:链接 Dart Packages:链接1.1 React Native框架的优势跨端方案的初衷是要解决多平台重复开发的问题,也...
2020-01-15 14:23:45
365
原创 Flutter列表ListView学习
1. 热重载1.1 什么是热重载Flutter热重载:在我们调试布局的时候,更改代码,模拟器上可以立即看到代码改动的效果;而不是iOS和Android单独开发需要重新编译,启动,耗时极长。开发效率:Flutter的热重载可帮助开发者快速地进行测试、构建UI、添加功能并更快地修复错误。在iOS和Android模拟器或真机上可以实现毫秒级热重载,并且不会丢失状态。这真的很棒,相信我,如...
2020-01-15 14:22:16
500
原创 iOS开发单向散列函数:MD5及SHA1-SHA224-SHA256
1.1 单向散列函数单向散列函数(One-way hash function),也称之为消息摘要函数(Message Digest Function),哈希函数,它可以根据消息的内容计算出一个散列值;输出的散列值,也被称为消息摘要(message digest)、指纹(fingerprint);1.2 单向散列函数的特点1.散列值的长度与消息的长度无关,无论消息是1bit、10M、100G...
2019-11-26 22:45:09
422
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人