IOS

如何在iOS中高效的加载图片详解

2021-10-26
目录 前言 图片的渲染流程 DataBuffer SD源码分析 ImageBuffer 占用内存大小 Xcode测试 如何减少图像占用内存 向下采样 SD源码分析解码过程 选择正确的图片渲染格式 渲染格式 如何正确的选择渲染格式 减少后备存储器的使用 减少或者不使用 draw(rect:) 方法 如何在列表中加载图片 线程爆炸 总结 前言 在iOS开发中,图片(UIImage)是我们在开发中,占用手机内存比较大的对象,如果在运行过程中,内存占用过大,对电池寿命会造成影响,如果超过了内存占用的最大

Xcode中代码注释编写的一些小技巧

2021-10-26
目录 前言 Objective-C的代码注释 Swift的代码注释 Objective-C和Swift的注释风格现在已经统一 快速修改注释 参考文档 总结 前言 码农总是在搬砖,日复一日,年复一年,有的时候都会麻木. 代码大家都会写,但是把注释写好却是一个技术活. 下面这段话,很好的说明了写好注释的感觉: 注释代码很像清洁你的厕所--你不想干,但如果你做了,这绝对会给你和你的客人带来更愉悦的体验.-- Ryan Campbell 今天给大家聊的就是在Xcode中,代码注释编写小技巧. Objec

iOS Swift逻辑运算符示例总结

2021-10-12
目录 运算符分类 赋值运算符 算数运算符 组合运算符 比较运算符 三目运算符 合并空值运算符 区间运算符 逻辑运算符 总结 运算符分类 从操作数角度看:运算符包括一元.二元.三元.这里的一二三指操作数的数量,操作数指的是被操作的数值. 从运算符位置看:运算符分为前缀.中缀.后缀.例如:!b, b + c, c! 赋值运算符 赋值运算符( a = b )可以初始化或者更新 a  为 b  的值: 如果赋值符号右侧是拥有多个值的元组,它的元素将会一次性地拆分成常量或者变量: let (x, y) =

iOS开发实现计算器功能

2021-10-09
本文实例为大家分享了iOS实现计算器功能的具体代码,供大家参考,具体内容如下 效果图 Masonry 使用数组来自动约束 NSArray *buttonArrayOne = @[_buttonAC, _buttonLeftBracket, _buttonRightBracket, _buttonDivide]; //withFixedSpacing: 每个view中间的间距 //leadSpacing: 左最开始的间距 //tailSpacing:; 右边最后的的间距 [buttonArrayO

iOS自定义雷达扫描扩散动画

2021-10-09
本文实例为大家分享了iOS实现雷达扫描扩散动画的具体代码,供大家参考,具体内容如下 自己自定义了 一个雷达扫描/扩散效果的View. 扫描View 效果如下: 扩散View 效果如下: 自定义的代码如下: 1. RadarView.h #import <UIKit/UIKit.h> typedef NS_ENUM(NSInteger, RadarViewType) { RadarViewTypeScan, RadarViewTypeDiffuse }; @interface RadarView

iOS实现雷达扫描效果

2021-10-08
本文实例为大家分享了iOS实现雷达扫描的具体代码,供大家参考,具体内容如下 #import <UIKit/UIKit.h> @interface LTIndicatiorView : UIView @property(nonatomic,strong)UIColor *color; @property(nonatomic,assign)float repeatCount; @property(nonatomic,strong)UIColor *borderColor; @property(no

iOS15适配小结

2021-09-28
目录 1.tabbar及navicationbar的背景颜色问题 原因:因为设置颜色方法在ios15中失效 解决方法--重新设置相关属性 2.tableview新属性-sectionHeaderTopPadding 使用 1.tabbar及navicationbar的背景颜色问题 问题:从ios14升级到ios15会出现 导航栏背景颜色失效 原因:因为设置颜色方法在ios15中失效 --在iOS13更新的API中新增了针对navigationBar,tabbar分别新增了新的属性专门管理这些滑动

iOS实现应用悬浮窗效果

2021-09-12
本文实例为大家分享了iOS实现应用悬浮窗效果的具体代码,供大家参考,具体内容如下 需求 在一个app应用的最顶部添加一个悬浮窗,就像ios系统AssistiveTouch 可以左右滑动,但是最终会停在左边或右边. 实现思路 在应用的视图的最顶层添加一个UIWindow,用这个UIWindow 充当悬浮窗,给UIWindow添加移动的手势监听,让悬浮窗随着手指移动,释放的时候,让它以动画的方式靠边 代码 //悬浮窗测试 //创建一个悬浮窗口 mwindow = [[AssistiveTouch a

iOS文本的多语言适配以及实践指南

2021-09-07
目录 背景 字体包的多语言适配和实践 需求分析 技术设计 文本信息的多语言适配和实践 需求分析 技术设计 技术开发 拓展 总结 背景 产品被多个国家使用,产品方希望产品拥有更好的多语言使用体验,所以设计师提供多种字体来适配指定的语言.基于以上背景,客户端需要快速给出解决方案并且上线. 字体包的多语言适配和实践 需求分析 首先,在了解产品需求和设计方案之后,结合业务研发人员的痛点,整理出以下需求. 产品和设计的需求 不同语言,对应字体包不相同. 全局字体默认使用设计师指定的字体包. 某些语言的字体

iOS masonry的使用方法

2021-09-06
目录 iOS masonry的基本使用 一.CocoaPods的安装 二.Masonry的基本使用 1.三个约束和基础API iOS masonry的基本使用 前言: 在写OC的UI时,当在不同的机型上运行时,如果只用frame则会导致视图中的控件严重变形,这是因为不同机型的屏幕大小不一样,所以这周学习了masonry,掌握了一些基本用法.在使用第三方库Masonry之前,需要先安装CocoaPods. 一.CocoaPods的安装 安装教程 安装好后,创建一个工程"test2",创建

IOS 算法 三数之和求解问题

2021-08-31
目录 IOS 算法三数之和求解问题 1.三数求和简单介绍 2.代码 IOS 算法三数之和求解问题 1.三数求和简单介绍 对于一个整数的数组, 是否存在a, b, c 使得 a + b + c = 0, 返回a b c 数组,相同数组只返回一个,: 例如: [-1, -2, 6, 5, 0, 1, 2, -1, -1] 返回 [[-1, 0, 1], [-2, 0, 2], [-1, -1, 2]] 关键点: ① 找到和为0的三个数 ② 去除相同项, 比如: 上面的数组 其实 [-1, 0, 1]

IOS NSTimeInterval使用案例详解

2021-08-28
一 ios 获取时间间隔 想在程序开始或者进入某个界面 ,到结束程序或退出某个界面,获取到这个持续时间. 获取到这个时间还需要转化一个取得时分秒. -(NSString *)getCurrentTime { NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; NSString *dateTime = [formatte

IOS之WebSocket框架Starscream案例详解

2021-08-25
传统的网络技术 (也就是 Berkeley sockets) 被认为是可靠和稳定的.但是 Berkeley socket 在某些 web 技术,比如代理和防火墙下不太好使.WebSocket 出现于 2011 年,是一种在客户端和服务端之间建立双向通讯的新技术.WebSocket 比起多个 HTTP 请求来说更有效率并允许长连接. 在 iOS 上使用 WebSocket 并不是那么容易.iOS 和 Mac 库 Starscream 的出现,极大地简化了 WebSocket 的创建和使用. 注:本

iOS实现联系人列表功能

2021-08-25
本文实例为大家分享了iOS实现联系人列表功能的具体代码,供大家参考,具体内容如下 按照顺序排列联系人列表,需要引入一些工具(详见demo): 主要部分代码: #import "LinkMan.h" #import "LinkmanCell.h" #import "LinkmanSelectCell.h" #import "pinyin.h" #import "ChineseString.h" @interf

iOS实现贝塞尔曲线动画

2021-08-24
本文实例为大家分享了iOS实现贝塞尔曲线动画的具体代码,供大家参考,具体内容如下 效果如图: 仿美人相机,手势滑动隐藏顶部view.为了方便讲解,将屏幕分为几个区域,如图: 在拖动过程中: 1.拖动距离小于minMoveDistance,贝赛尔曲线发生形变 2.拖动大于minMoveDistance,整个view开始下移 在松开手时: 1.拖动距离小于minMoveDistance,未发生位移,贝塞尔曲线恢复形变 2.拖动大于minMoveDistance,小于minDisappearDista

iOS实现从通讯录中选择联系人

2021-08-23
有时候APP需要用户输入一位联系人的姓名和电话,除了用户手动输入,一般也允许用户从通讯录中选择一位联系人(图1),下面的代码就是使用系统的<AddressBookUI/AddressBookUI.h>库实现这一需求. 图1 完整代码: #import "ViewController.h" #import <AddressBookUI/AddressBookUI.h> @interface ViewController ()<ABPeoplePickerNa

Flutter Boost 混合开发框架

2021-08-23
目录 一.Flutter Boost简介 二.Flutter Boost集成 2.1 Android集成 2.2 iOS集成 三.Flutter Boost架构 四.FlutterBoost3.0更新 4.1 不入侵引擎 4.2 不区分Androidx和Support分支 4.3 双端设计统一,接口统一 4.4 支持 [打开flutter页面不再打开容器] 场景 4.5 生命周期的精准通知 4.6 其他Issue 一.Flutter Boost简介 众所周知,Flutter是一个由C++实现的F

iOS实现日历行程的增删改查

2021-08-23
前言 我们可以使用系统提供的EventKit框架来访问和操作用户的日历日程和提醒(虽然日历和提醒是两个独立的app,但是是用同一个框架来处理数据).同样地,日历和提醒的数据的数据,都是存储在同一个叫做Calendar Database的数据库中: EventKit不仅能获取已存在的日程和提醒,还能在自己的app中创建.编辑.删除用户的日程和提醒,还能添加提醒.监听变化等. 在iOS10+中,若要访问用户日程或提醒,需要在info.plist中分别添加NSRemindersUsageDescrip

iOS block循环引用详解及常见误区

2021-08-19
Block循环引用 什么情况下block会造成循环引用 ARC 情况下 block为了保证代码块内部对象不被提前释放,会对block中的对象进行强引用,就相当于持有了其中的对象,而如果此时block中的对象又持有了该block,就会造成循环引用. 常见误区 误区一.所有block都会造成循环引用 在block中,并不是所有的block都会循造成环引用,比如UIView动画block.Masonry添加约束block.AFN网络请求回调block等.     1. UIView动画block不会造

iOS手动添加新字体的步骤和踩坑记录

2021-08-10
目录 前言 字体添加 1.引入字体文件 2.配置 Info.plist 文件 3.解决添加新字体不生效问题 4.代码中设置字体 总结 前言 最近在一个日记软件,发现系统的默认字体过于丑陋,于是有了更改应用字体的想法.完成操作的过程中踩了一些小坑,写下此文记录一下,希望能对后人有所帮助. 字体添加 1.引入字体文件 直接将下载好的字体文件拖入项目中 2.配置 Info.plist 文件 在 Info.plist 文件中添加新行 "Fonts provided by application"