IOS

iOS自定义相机功能

2022-07-19
大多数app都会涉及到上传照片这个功能,图片来源无非是从相册获取或者相机拍摄.如果不是特别要求,调用系统已经满足需求.但对于特殊需求,就需要自定义相机拍摄界面了. 对于无需定制的相机,使用系统的UIKit库里的UIImagePickerController类,几行代码,几个代理方法就可满足所需.但如果要深度定制,就要系统库AVFoundation内部的相关类. 创建自己的相机管理类CameraManager(继承于NSObject) .h文件 #import <Foundation/Founda

iOS开发UI之弧形文字

2022-07-19
本文实例为大家分享了iOS开发UI之弧形文字的具体代码,供大家参考,具体内容如下 要实现类似效果的弧形文字,网上找了一圈没找到有简单的实现方式,CATextLayer也不能使用path来用路径绘制出来,所以我采用了一个曲线救国的方式. 实现思路 1.先找到文字的中心点 ,用一段圆弧将这些中心点连接起来 2.过每个中心点做圆弧的切线,找到圆弧的圆点O,连接O与每个中心点 3.现在把字去掉,来找点 圆点为O,圆弧最左边为A,最右边为B,顶点为N,AB与OP交点为P,由圆的垂径定理可以知道,AB是垂直

iOS实现手动和自动屏幕旋转

2022-07-19
本文实例为大家分享了iOS实现手动和自动屏幕旋转的具体代码,供大家参考,具体内容如下 首先iPhone中屏幕分为状态栏方向和设备方向 typedef NS_ENUM(NSInteger, UIDeviceOrientation) {     UIDeviceOrientationUnknown,     UIDeviceOrientationPortrait,            // Device oriented vertically, home button on the bottom

iOS开发之UIMenuController使用示例详解

2022-07-18
目录 简介 接口介绍 使用探索 如何创建并显示 UIMenuController 实现 Item 点击事件 菜单 Item 太多??? UIResponderStandardEditActions 协议 添加自定义菜单 箭头的方向 实际使用 总结 简介 UIMenuController 是一个菜单编辑界面,在很多地方都能用到,通常用于剪切.复制.粘贴.选择.全选和删除命令等,也可以自定义想要的操作,它长这样: 接口介绍 open class UIMenuController : NSObject

UICollectionView&nbsp;实现图片浏览效果

2022-07-18
目录 一.效果展示 二.实现思路 三.代码整理 1.PhotoBrowseViewLayout 2.PhotoBrowseCollectionViewCell 3.CollectPhotoBrowseView 四.总结与思考 一.效果展示 废话开篇:利用 UICollectionView 简单实现一个图片浏览效果. 二.实现思路 1.封装 UICollectionViewLayout ,实现内部 UICollectionViewCell 的布局. UICollectionViewLayout 在

flutter状态管理Provider的使用学习

2022-07-18
目录 1. provider的使用 2. 控制Widget的刷新颗粒度 3. 小结 本文主要介绍flutter中状态管理组件provider,provider: ^6.0.3主要是用于我们系统InheritedWidge的封装,用于数据的传递和管理. 1. provider的使用 网上也有很多关于provider说明,也可以看下官方的provider的 README.这里我记录一下我自己学习.我们对于简单的数据共享可以设置参数,之后子页面进行数据方法回调,从而完成数据间的通信.但是比较麻烦,下面

IOS开发仿微信消息长按气泡菜单实现效果

2022-07-18
目录 正文 使用方法 导入项目 使用 对比微信实现效果 正文 话不多说,直接上效果图 使用方法 导入项目 代码地址:github.com/shangjie119… 将SJPopMenu文件夹拖入到工程或者使用pod导入工程 pod 'SJPopMenu' 这个组件降低与原工程的耦合度,几乎不需要改动原工程代码. 使用 显示: [[SJPopMenu menu] showBy:xxxxxx] 需实现 SJCustomSelectTextView 里面方法,如果是自定义textView,只需将 SJ

iOS实现简单长截图

2022-07-18
本文实例为大家分享了iOS实现简易的长截图的具体代码,供大家参考,具体内容如下 长截图的实现原理: 实际上是将view的内容绘制成图片,再将各个view绘制出来的图片拼接出来. 具体代码: 将view绘制成图片 func getImage(in view:UIView?) -> UIImage? {     guard let view = view else {return nil}     let size = view.bounds.size     UIGraphicsBeginImag

iOS实现抖音点赞功能

2022-07-17
目录 前言 实现原理 三角形的贝塞尔曲线原理 代码实现 创建 CAShapeLayer 创建初始位置的贝塞尔path 结束 前言 很多人肯定都是玩过抖音的吧,那也肯定为了某位美女或者帅哥偷偷作死的点过小爱心.但是你肯定不知道怎么实现的吧,今天我来教你一手,仔细看. 本篇文章主要包含技术点: CAShapeLayer和贝赛尔曲线绘制三角形 组合动画的时间技巧 实现原理 首先 我们来详细分解一下这个动画 请仔细观察 我们来看单独的一个动画 请仔细观看 我设置10秒的duration 以便于大家能看清

IOS开发自定义view方法规范示例

2022-07-17
目录 前言 一.关于自定义View的初始化方法 二.关于addSubview 三.关于layoutSubviews 四.关于frame与bounds 总结 前言 对于接触业务开发的童鞋,自定义View的开发是进行最频繁的工作了.但发现一些童鞋还是没有以一个好的规范甚至以一种错误的方式来搭建UI控件.由此,本文将以以下目录来进行讲叙,详细描述关于自定义View的一些书写注意事项. 关于自定义View的初始化方法 关于addSubview 关于layoutSubviews 关于frame与bound

iOS开发TableView网络请求及展示预加载实现示例

2022-07-17
目录 引言 传统的上拉加载更多 滑动过程中预加载 方法1(最简单.高效和最推荐): 方法2(自己计算实现,不推荐了): 下面是具体实现细节(此细节是针对上述方法2的) 总结 引言 2022.02.11更新:新增了最简单.高效和最推荐的方法. 2020.05.25更新:对总结进行了详细的补充. 传统的上拉加载更多 在iOS的开发过程中,如果用列表展示数据,此时一般的逻辑为上拉加载更多数据,配合MJRefresh就是在滑动到最底部时,触发加载更多的网络请求. 滑动过程中预加载 如果希望体验好一点,那

iOS封装倒计时按钮HLCountDownButton示例详解

2022-07-17
目录 引言 演示图 可选自定义属性 3种样式选择 回调说明 全局样式设置 引言 在开发中经常会用到倒计时的按钮,常用在发送短信验证码中.最差的写法是把代码写在ViewController中.这样的话如果项目中存在多个倒计时按钮,代码就十分臃肿了.所以封装一个倒计时按钮就迫在眉睫了.传送门HLCountDownButton,欢迎帮忙点点小星星 支持过xib.storyboard自定义样式 支持切换前后台计时准确 多种样式切换 支持CocoaPods导入pod "HLCountDownButton&

iOS开发多线程下全局变量赋值崩溃原理详解

2022-07-17
目录 问题 Demo 崩溃原因 崩溃路径 验证方式 其它测试 问题 Demo 在多线程下同时给全局变量赋值时会发生崩溃: static NSObject *_instance; - (void)foo { _instance = [[NSObject alloc] init]; } 崩溃原因 如下为源码的汇编代码: Demo-iOS`-[ViewController foo]: 0x104e4e088 <+0>: stp x29, x30, [sp, #-0x10]! 0x104e4e08c

ios开发UITableViewCell图片加载优化详解

2022-07-17
目录 前言 图片自适应比例 XHWebImageAutoSize 仅加载当前屏幕的内容 预加载 前言 我们平时用UITableView用的很多,所以对列表的优化也是很关注的.很多时候,我们设置UIImageView,都是比例固定好宽高的,然后通过 scaleAspectFill 和 clipsToBounds 保持图片不变形,这样子做开发的效率是很高的,毕竟图片宽高我们都是固定好的了. 那如果产品要求图片按真正的比例展示出来呢?如果服务器有返回宽和高,那就好办了,那如果没有呢,我们应该怎么去做呢

UIScrollView实现六棱柱图片浏览效果

2022-07-17
目录 一.效果展示 二.实现原理 三.代码 四.总结与思考 一.效果展示 废话开篇:利用 CATransform3D 图形变换及 UIScrollView 的一些方法实现一个六棱柱图片浏览效果 二.实现原理 1.在一个基础 View 上添加六棱柱的六个侧面视图. 2.调整六棱柱的各个侧面的旋转角度及z轴数值. 3.基础 View 放在 UIScrollView 上,通过监听 UIScrollView 的滑动来设置基础 View 的坐标x值与与y轴的旋转角度. 三.代码 创建 PhotoDrumB

iOS底层探索之自动释放池原理解析

2022-06-30
目录 1.概述 2.底层探索 2.1.打印自动释放池结构 2.2.objc_autoreleasePoolPush 2.2.1.AutoreleasePoolPage 2.2.2.AutoreleasePoolPageData 2.2.3.push(对象压栈) 2.2.4.池页容量 2.3.objc_autoreleasePoolPop 2.3.1.pop(对象出栈) 2.3.2.popPage 2.3.3.releaseUntil 2.3.4.kill 3.嵌套使用 总结 1.概述 OC 中的

iOS UITextView 实现类似微博的话题、提及用户效果

2022-06-04
目录 #话题# 1.高亮 2.点击事件 @提及用户 1.高亮 2.整体删除 最近接了一个需求,在发布动态的时候,增加类似微博的#话题#.@提及用户的效果,在此做一简要记录. #话题# 最终效果是: 编辑过程中#话题内容#实时高亮 高亮部分可以响应点击事件 1.高亮 基本思路是:使用正则匹配出成对的#,再利用UITextView的富文本实现高亮效果. func refreshTopicStyle() { let regex = try! NSRegularExpression(pattern: "

iOS无障碍适配西瓜视频Voice Over实践示例

2022-05-18
目录 一.Voice Over 简介 二.Voice Over 使用指南 Voice Over 开发环境配置 Voice Over 基本使用 —— 以西瓜为例 入门手势 进阶手势 三.快速适配 Voice Over / 无障碍 设置无障碍焦点 设置无障碍文案 调整焦点顺序 西瓜首页适配实战 搜索栏 频道栏 & 频道编辑器 作者动态栏 视频列表 四.Voice Over 相关协议介绍 UIAccessibility 无障碍标签标注 UIAccessibilityAction 无障碍手势响应 UIA

iOS开发创建frame实现window窗口view视图示例

2022-05-15
目录 UIScreen类 UIView UIWindow 实战演练一下: 取得画面工作区域的大小 一些 UIView 中管理 Subview 常用的方法 UIScreen类 要在屏幕上显示内容首先要创建一个窗口承载内容,要创建一个窗口,需要一个边框(frame),含有边框信息的底层 结构就CGRect. 每个能够在屏幕上显示自己的对象都有一个边框,定义了他的显示区域,不过许多高层的视图类会自动计算这一信息.其他的那些类则在视图初始化时通过一个initWithFrame的初始化方法来设置. 再来认

iOS&nbsp;DispatchSourceTimer&nbsp;定时器的具体使用

2022-05-06
目录 1. 概述 2. DispatchSourceTimer 2.1 GCD Timer 创建 2.2 GCD Timer 配置 2.3 GCD Timer 部署任务 2.4 GCD Timer控制方法 2.5 双重循环 DispatchSourceTimer 参考文章 1. 概述 说起计时器,很多开发人员第一时间就会想起Timer,但是随着使用的深入,慢慢就发现Timer其实不是很好用,比如说TableView滑动时候不执行,Timer循环应用. 2. DispatchSourceTimer