自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(610)
  • 收藏
  • 关注

原创 实现多读单写的原理

但是我们使用dispatch_syn的同步方法,为什么能达到多读的效果呢,就是因为,我们所说的同步执行,是指在同一线程里面来说的,当在多个线程中的时候,就没有同步的概念了。单读就不说了,因为栅栏函数就是有这样的特性,需要等之前的block执行完毕,之后的block需要等栅栏函数执行完毕。由此可见,在多线程中,syn并不能达到同步的效果。我们通过以下代码进行验证。

2024-05-23 08:39:15 72

原创 iOS 使用栅栏函数实现多读单写

在队列中,barrier块必须单独执行,不能与其他block并行。这只对并发队列有意义,并发队列如果发现接下来要执行的block是个barrier block,那么就一直要等到当前所有并发的block都执行完毕,才会单独执行这个barrier block代码块,等到这个barrier block执行完毕,再继续正常处理其他并发block。在上面的代码中,setter方法中使用了barrier block以后,对象的读取操作依然是可以并发执行的,但是写入操作就必须单独执行了。

2024-05-23 08:22:37 133

原创 封装了一个iOS环形加载动画和成功对号效果

的话,就会造成一个后果,就是,从七点到终点和走过的line中间的地方会有黑色,所以这里要特别注意,fillColor 设置成clearcolor。这里要注意一个地方,如果我们这里不设置。如果不设置的话,效果就是下面的样子。

2024-05-22 22:07:07 109

原创 封装了一个iOS水平方向瀑布流布局

当前最小的x 所在的列,其实原理和竖直方向上的是相同的。只不过这里记录的列是水平方向的,同时要记录下。思路就是和竖直方向上的瀑布流布局是一样的,子类layout 中的代码。父类layout中的代码。

2024-05-19 16:10:33 186

原创 iOS 中同步栅栏和异步栅栏的区别

只有一个区别,同步栅栏函数会阻塞当前线程,而一步栅栏函数不会阻塞当前线程,

2024-05-05 15:23:44 106

原创 iOS 实现视图遮罩效果

这时候,我们可以通过设置该视图layer.mask = layerb来实现,需要注意的是,这里的layerb必须要设置backgroundColor,渐变layer有colors,否则达不到效果。有时候,我们会遇到这种需求,只讲视图的某个部分展示出来。

2024-04-29 20:28:03 948

原创 iOS实现一个高性能的跑马灯

该跑马灯完全通过CATextLayer 实现,轻量级,并且通过。系统的位移动画实现滚动效果,实现更好的性能。

2024-04-28 22:33:20 1413

原创 iOS 获取到scrollView停止拖动时候的速度

在 - (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset。方法中得到手势离开的时候的速度。

2024-04-28 21:36:52 871

原创 iOS 实现类似抖音翻页滚动效果

参考抖音的滚动效果,需要我们在结束拖动的时候,动画设置偏移量。

2024-04-28 08:28:32 666

原创 Unable to determine the platform for the `LiuBoapp` target.

今天再执行pod install 的时候, 遇到了这个问题。解决方法,将这一样代码放开就行了。后面发现podfile 中的。

2024-04-27 21:14:08 105

原创 drb requires Ruby version >= 2.7.0. The current ruby version is 2.6.10.210.

今天安装cocoa pod ,执行命令。

2024-04-27 20:40:59 207 3

原创 两个列表联动修改选中标题的时机

这个时候,我们有多种实现方案,其中一种就是在scrollVIewdidscroll 方法中执行,需要注意,这种实现从效果上没什么问题,但是在性能上是有多余的消耗的,因为scrolldidscroll是会很频繁的执行的,但是我们又不能在停止滚动的时候再执行,这个时候,就需要我们判断好一个时机,列表是标题,一个列表是分区的内容,我们滚动内容列表的时候,需要选中当前内容列表中对应的标题,我们可以设想一下,什么时候,选中的标题会有可能发生变化呢,就是内容列表的cell消失的时候,

2024-04-26 22:31:58 120

原创 iOS 设置 scrollview 停止拖动之后快速停止

【代码】iOS 设置 scrollview 停止拖动之后快速停止。

2024-04-26 21:55:46 88

原创 快速计算出分页scrollView当前展示第一个和最后一个子视图索引

当前正在展示的两个子视图的索引位置是。

2024-04-26 21:52:29 87

原创 获取一个数组中最小的值

【代码】获取一个数组中最小的值。

2024-04-25 21:30:08 117

原创 iOS 视觉橱窗效果

【代码】【无标题】

2024-04-18 11:29:57 358

原创 鸿蒙开发中使用lazyforeach 有图片闪烁的问题

经过测试,是lazyforeach中的第二个闭包中返回的字符串相等。

2024-04-15 08:23:41 117

原创 鸿蒙中实现引用本地js ,css 拼接html文本,并加载

/ 点击按钮时,通过loadData,加载HTML格式的文本数据。

2024-04-11 21:22:42 174 1

原创 记录鸿蒙开发中网页滚动和底部原生联动的问题

上面的的机制就是在符合条件的情况下,我是网页的滚动手势会被分发到我是原生的组件上,从而达到拖动网页的时候,滚动list。将嘴外层的list的事件进行分发,(网页和底部原生列表都是在list的listitem里面)场景:有这样一个页面,页面的上部分是一个大的网页,底部是一个原生的列表,所以这个时候网页和原生的滚动就出现了问题,所以我们就用到了鸿蒙的事件分发。由于鸿蒙系统的机制,网页的最大高度只能是屏幕高度,不能超出一屏幕高。其中的windowY 都是想等的,都是触摸点像对于屏幕原点的位置。

2024-04-11 21:20:00 154

原创 记录一个在鸿蒙网页中添加原生组件,并跟随滚动的效果实现

第三中情况下,我们设置原生组件在stack中的position为(组件在网页中的位置y - 网页的偏移量)有了这个思路之后,我们就可以写代码了。思路,我们将网页放在一个stack组件上面,然后将 需要嵌入到网页的原生组件也放到网页上。鸿蒙网页中,我们需要在某个位置添加一个原生的组件,比如视频或者音频。第二中情况下,我们将原生组件放到网页顶部(完全滑出网页的位置)第一中情况下,我们将原生组件放到网页组件的底部(超出网页)第一: 当原生组件位置超出网页最底部,第三:就是原生组件在网页中跟随网页滚动。

2024-04-11 21:07:40 227

原创 记录一个鸿蒙开发中获取webView内容高度不正确的问题

/ 点击按钮时,通过loadData,加载HTML格式的文本数据。// 组件创建时,加载www.example.com。这里是web组件初始化的代码。//记录上次网页的偏移量。

2024-04-10 08:21:51 470

原创 鸿蒙中闭包的赋值

【代码】鸿蒙中闭包的赋值。

2024-04-03 22:04:33 105

原创 鸿蒙开发中的闭包嵌套闭包使用

【代码】鸿蒙开发中的闭包嵌套闭包使用。

2024-04-03 07:57:22 134

原创 关于远程调试应用中的网页鸿蒙

hdc fport tcp:9222 localabstract:webview_devtools_remote_进程ID。然后使用chrome,输入地址查看可调试页面。在ide中找到应用进程ID(日志可以看见)关于远程调试应用中的网页。

2024-03-27 17:17:53 457

原创 记录一个鸿蒙原生想js发送方法不执行的问题

修复方法,需要添加一个空字符串,否则会导致方法不执行。修复代码, 注意,是 "`"符号。原生调用js 方法的错误写法。

2024-03-25 16:58:21 223

原创 记录一个iOS性能优化点

我们可以这样处理,在网络请求结束之后,在自线程中将富文本创建好,保存到model的一个属性中,然后我们展示cell的时候,直接展示就行了,不需要再创建。的时候也是在主线程,这时候就有一个问题,如果cell的数量特别大,并且富文本很复杂,页面滚动的时候,就会有很明显的卡顿,因为在主线程进行了耗能的操作,我们一个列表卡片中要展示多个复杂富文本,开始的写法,是这样的,在给cell的model赋值的时候,去创建富文本,并进行展示,

2024-03-20 21:31:04 233

原创 鸿蒙开发中闭包的使用

闭包的使用要分成三个部分,闭包的声明,闭包的实现,闭包的调用。

2024-03-18 20:58:54 440

原创 记录一个鸿蒙不能选中手机的问题

1 数据线只能充电,不能测试,换了一根好的。

2024-03-18 11:40:40 314

原创 iOS 实现悬浮跟手滚动效果

透视图就跟着tablView滚动,(通过记录上次偏移量和当前偏移量来实现, tableView滚动多少,头视图就滚动多少),然后限制一下透视的的两个边界位置即可,通过MIN和MAX实现,同时,为了实现性能的优化,在超出临界值之后,就不再设置frame。思路: 透视图不是放在tableView上面,而是放在控制器的view面,当tablView滚动的时候。

2024-03-10 22:00:47 527

原创 记录使用kiwi进行单元测试文件左边不展示运行按钮的问题

进行单元测是的时候,遇到一下一个问题,就是测试文件左上方没有运行按钮,后来经过调试,发现有两个原因可以导致这个问题。2 podfile 中 test的target中,没有添加pod ‘kiwi’, 只在住工程中添加了。1 创建spec文件的时候,没有在test 文件夹和target下。

2024-02-20 08:40:30 387

原创 iOS 使用Image I/O 实现超大图片降采样

一个图片解码成未压缩的位图的时候,占用的内存和图片的文件大小没有关系,和图片的尺寸大小有关系,尺寸越大,所需要的像素点越多,所以超大图片,我们需要进行优化处理。给UIImage 添加一个分类,在分类中添加一个方法 ,该size就是。UIImageView的大小。这里直接上降采样代码。

2024-02-19 22:48:44 1179

原创 iOS datatask的taskIdentifier 是怎么确定的

一个session 可以对应多个task ,并且task的identifier是从1 开始的,每创建一个新的task,task的identifier就增加一。

2024-01-31 14:49:36 432

原创 修复TabbarButton 中标题展示不完全的问题

遇到一个问题,就是从列表页跳转到详情页之后,再返回的时候,tabbarbutton 中的文字变成…label的类型是 UITabBarButtonLabel,通过双层遍历获取到。这里用到了两个点,一个是button的类型是 UITabBarButton。这里就添加了一个容错,在 viewDidLayoutSubviews。标题的宽度不够了,本来是23的,返回之后变成20了。打开图层,如图所示,

2024-01-30 10:23:55 456

原创 iOS 使用runtime调用父类的类方法

【代码】iOS 使用runtime调用父类的类方法。

2024-01-11 11:03:32 405

原创 记录一个常量定义导致的重复问题duplicate symbol ‘_kk‘ in:

原因: 在.h文件中定义了一个常量。

2024-01-04 14:57:57 406

原创 封装了一个顺滑嵌套滚动的框架

就是开始滚动的时候,上面的头部和下面的内容是一起滚动的,但是当滚动到segment 的时候,segment是悬停 的,下面的tableView是分区的。

2023-12-03 14:58:47 817 3

原创 ZFPlayer 在tableView列表中播放视频架构设计

需要在如图所示的列表中播放视频,并且播放视频在对应的卡片上,滚动结束的时候, 完整露出封面图的第一个视频自动播放。

2023-12-01 21:09:01 582

原创 ZFPlayer 播放视频的时候的视图层级

首先看正常展示的时候,还没又开始播放这个时候我们打开图层看一下,发现视频时长和播放按钮都是放在视频封面图上的。

2023-11-29 21:31:14 524

原创 使用 ZFPlayer 播放视频的注意点

通过调用系统的AVPlayer.muted来实现的。

2023-11-28 21:11:49 579

原创 convertRect:toView 方法注意事项

newRect.origin = a在c 中的位置 + b.frame.origin。其中newRect和 b.frame的size不变,只改变origin。我们开发中有时候会用到左边转换,convertRect:toView。即是在a视图中 的 b.frame的位置相对于c的坐标。通常情况下,我们回这样使用。这是在网上找到的一张图。

2023-11-24 20:49:40 461

空空如也

空空如也

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

TA关注的人

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