![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
干
dengjiangszhan
终点开始
于此,梵高成了我最钟爱的英雄
牛逼,某一天
展开
-
网易云信 UI 开发
@interface NIMSessionViewController ()<NIMMediaManagerDelegate, ChatInputDelegate>没有直接引入,他的头文件,通过#import “NIMSessionConfigurator.h”来间接导入原创 2021-11-15 17:53:20 · 269 阅读 · 0 评论 -
声网的实例代码 iOS 配置, 基本完成
将 Xcode 的Bundle Identifier从io.agora.InteractivePodcast改为io.agora.Interastruct BuildConfig { // 声网 // Agora App Id static let AppId = "81cf3717bea24aaaac1ba3e7a226d5a4" // 777 static let Token = "00681cf3717bea原创 2021-11-13 16:32:18 · 1187 阅读 · 0 评论 -
钉钉发不了消息 , 聊天室技术
词语过敏了找客服,申诉大法好做账号申诉原创 2021-11-08 19:57:20 · 226 阅读 · 0 评论 -
Android 断点技巧
Android打断点原创 2021-05-10 15:06:34 · 268 阅读 · 1 评论 -
iOS 嵌套滚动界面实现思路: UIScrollView 上面放 UIPageViewController
要实现这种效果:UIScrollView ( base scroll ) 上面放 UIPageViewController,UIPageViewController 有很多 Page, 一个 page 是一个 UIViewController,page 上面可以放 UIScrollView ( child scroll )需要base scroll 可以滑, 他的内容高度 = 子滚动视图的内容高度 + 子滚动视图之上内容的高度base scroll 的 content size’s heigh原创 2021-04-26 11:36:22 · 885 阅读 · 1 评论 -
网络视频复杂
1, 传输的数据,复杂2, tbd原创 2021-04-21 13:41:09 · 67 阅读 · 0 评论 -
android intent
原创 2021-04-20 10:51:06 · 50 阅读 · 0 评论 -
gradle script 的写法
语法是 ruby原创 2021-04-14 09:53:24 · 169 阅读 · 0 评论 -
iOS 的 paged controller 的一种思路
实现下图的效果层次关系为:Collection View 有一个 header,header 上面有一个 scroll viewCollection View 还有很多 cell图中可视区域内,有 6 个效果是,点击 scroll view 上面的 item,可以更新下面 cell 的内容第一部分,自定义布局 Collection View layout布局精华class HanGridLayout: UICollectionViewLayout { override p原创 2021-04-12 23:03:22 · 74 阅读 · 0 评论 -
加深对 module 的理解,swift repo, 命名空间 local
为了便于修改调试别人发布的 repo把别人的代码,拉到本地,为了保持一致,不改变其命名空间本文例子是,把一个 github framework 的代码,内置 project 中这里用的是 rechsteiner/Parchment拷贝网上下载的源代码放到使用的 project 中并删掉项目配置选中项目 project,新建 target创建动态库库名,与 git repo 一致降低 lib 的版本一般会有这个操作添加网上下载的 githu原创 2021-04-12 11:18:14 · 110 阅读 · 0 评论 -
图算法, Bellman - Ford
原创 2021-04-09 01:25:24 · 95 阅读 · 0 评论 -
periphery & SPM ( 做本地, local )
代码:periphery scan \ --workspace "SwiftSocket.xcworkspace" \ --schemes "petit" \ --targets "petit" \ --retain-objc-accessible \ --retain-public配置SPM 静态库,配置结果原创 2021-03-30 19:03:54 · 167 阅读 · 0 评论 -
DNS Round Robin
DNS Round Robin一个域名 string,有好多 IPCNAME原创 2021-03-30 10:19:50 · 290 阅读 · 0 评论 -
DNS,string to IP
IP 的上一步,是子网, sub net判断是否在,当前网络中IP 直连IP 直接连接省略了, DNS 解析这一步原创 2021-03-30 10:00:00 · 82 阅读 · 0 评论 -
YYModel 源码分析:模型设计
前文介绍了 YYModel 怎么字典转模型,YYModel 源码分析:字典转模型概述本文继续探讨,modelMeta,存放模型的属性、和字典的键对应关系的描述文件结构:主要使用四个模型:@interface YYClassPropertyInfo : NSObject对应模型的属性@interface YYClassInfo : NSObject对应模型的类包含属性字典,NSDictionary<NSString *, YYClassIvarInfo *>@int原创 2021-03-25 18:07:32 · 243 阅读 · 0 评论 -
Core Text 实践 +:自动换行,与字级别的控制
本文通过 3 个例子,继续讲述 Core Text 实践上的思路前文已经实现了控制每个字的位置,Core Text 实践:自定义每个字的位置一个格子,一个字一个字,一个富文本,一个 CTLine,先画背景图,再画文字,即可例子一,在前文的基础上,实现自动换行将原本的两行 “椿\n赤い椿”,转换为一行 “椿 赤い椿”,剩下的,就容易了把每个字,转化为格子,遇到空格,就跳过模型处理模型长这样,struct Coupling: Decodable { var string:原创 2021-03-24 11:17:39 · 200 阅读 · 0 评论 -
Core Text 实践:自定义每个字的位置
第一步: 基础实现下面的效果,注意到每一行的间距为 01,有这么一个富文本 let attributed = NSMutableAttributedString(string: "新丰美酒斗十千,咸阳游侠多少年。\n相逢意气为君饮,系马高楼垂柳边。\n出身仕汉羽林郎,初随骠骑战渔阳。\n孰知不向边庭苦,纵死犹闻侠骨香。"); attributed.addAttributes([NSAttributedString.Key.font: UIFont.systemFont原创 2021-03-22 17:36:56 · 208 阅读 · 0 评论 -
Swift 的范型 + 扩展,举例
Swift 的范型 + 扩展,用于集合类型,很强范型就是模版,Generic + Extension 很适合搞代码简化本文通过 6 个例子,体现例子一实现这种效果有数据,一个界面没数据,使用默认界面 var array: [String]? func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int原创 2021-03-18 20:20:59 · 152 阅读 · 0 评论 -
YYModel 源码分析:字典转模型
本文拿一个简单的例子,看 YYModel 字典转模型的源代码有这么个模型@interface Author : NSObject@property NSString *name;@property NSString *birthday;@end @interface Book : NSObject@property NSString *name;@property NSUInteger pages;@property Author *author;@end创建的一般流程是这原创 2021-03-15 04:05:14 · 698 阅读 · 0 评论 -
leetcode 236. 二叉树的最近公共祖先
题目:给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”递归解决:func lowestCommonAncestor(_ root: TreeNode?, _ p: TreeNode?, _ q: TreeNode?) -> TreeNode? { guard let n = root, let原创 2021-03-03 14:50:44 · 69 阅读 · 0 评论 -
Core Text 处理点击指定文字的事件
背景:一般点击文本中的链接跳转,可以用 UITextView用 UITextView 的实现class ViewController: UIViewController, UITextViewDelegate{ @IBOutlet var textView: UITextView! override func viewDidLoad() { super.viewDidLoad() let link = "https://baike.baidu.co原创 2021-03-01 12:00:54 · 144 阅读 · 0 评论 -
Android Studio 设置 000
1, 可视化操作原创 2021-02-25 11:10:22 · 65 阅读 · 0 评论 -
Android Activity 000
安卓原创 2021-02-25 09:35:21 · 80 阅读 · 0 评论 -
Android Studio 设置
Android Studio 设置选择稳定版原创 2021-02-25 09:26:18 · 139 阅读 · 0 评论 -
图片朝向,与滤镜(透视校正)
前言:本文承接:照片选择区域功能的另一实现: 加动效及其他两篇接着讲述选择区域相关的处理旋转,选择区域,对选择的区域做透视校正的滤镜处理为了简化问题,项目设置为,仅 iPhone 竖屏运行在 iPad 上面这是拍照后,经历了一次左旋的图片问题使用滤镜(透视校正)简单,旋转后的图片,很可能与旋转前的图片朝向不一致,这影响了滤镜的效果场景ipad 拍照,默认横屏向上,跑 iPhone 竖屏的应用,相机设置为connection?.videoOrientation = AVCap原创 2021-02-24 00:21:43 · 454 阅读 · 2 评论 -
0.0.1, dealloc block, 讲好一个故事,iOS 面试题
1, 开篇本文试图回答,如下问题:1, 对象 dealloc 的时候,用一个 block 代替 dealloc 方法不是类级别控制,是对象级别控制2,关联对象3,锁本文是面试照着念主题,第 2 篇本文有参考 C…/CYLDeallocBlockExecutor1, 怎样用好 block,让 dealloc 再见因为对象释放的时候,对象的关联对象也会释放。把对象释放的时候,要执行的 block ,放在其关联对象的 dealloc 方法中。附加:typedef void (^Vo原创 2021-02-10 04:14:47 · 271 阅读 · 0 评论 -
iOS 中的堆与栈
计算机的堆与栈,属于动态内存 dynamic memory内存分为 4 部分:1, Code ( Text )这个 segment, 储存将要被执行的程序 instructions2, Static / Gloabl放全局变量,和静态变量这些变量,不是定义在函数中,这些变量的生命周期,与程序的,保持一致程序可以跑,就可以获取全局变量,和静态变量3, Stack 栈区存放 all the information of function callsand all the local va原创 2021-01-21 01:50:42 · 480 阅读 · 15 评论 -
图片加载库 kean/Nuke ,源代码看看
加载一张网络图片流程,3 步:1, 把这张网络图片,下载到本地;这时候有了一个 Data2, 对图片 Data 解码,即拿 Data, 生成 UIImage,3, 显示图片,把生成的 UIImage, 赋给 UIImageView 的 imagenuke 的调用 let request = ImageRequest( url: URL(string: "https://user-images.githubusercontent.com/15原创 2021-01-20 00:23:18 · 265 阅读 · 0 评论 -
6.1, 网络路由协议 Router protocols
Routing protocols原创 2021-01-17 02:36:58 · 102 阅读 · 0 评论 -
6, 网络路由 Router
网络路由 Router原创 2021-01-17 02:00:20 · 155 阅读 · 0 评论 -
5.3 位运算, CIDR
最基础的位运算,是或和与原创 2021-01-17 01:10:49 · 122 阅读 · 0 评论 -
4, 网际层 Internet Protocol
Computers communicate with each other over short distances, or on a single network segment or lan.物理层和数据链路层,保证了电脑传输信息,于短距离、局域网,可用allow data to across many networks, facilitating communications to over great distances.跨越多网络的通信,远距离的通信subnetti.原创 2021-01-15 16:12:15 · 204 阅读 · 0 评论 -
POP 绘图库 Asana/Drawsana 源代码看看
iOS 绘制就是采集点,贝塞尔曲线得到形状,绘图上下文去渲染出来Asana/Drawsana 图形库,设计的挺好他可以画多种图形,画线、文本、橡皮擦、五角形、矩形、箭头、角度,他支持多种操作,撤销上一步、还原上一步,平移选择的已渲染图形他的实现,大量使用了协议设计: 主要看数据结构可以分为三个层次,行为的处理 ( 采集点的传递 ) ,图形的绘制, 呈现的视图( 最开始采集点, 最后的渲染呈现 )图形的绘制Shape 协议,决定了可看 ( 可渲染 ),可点击ShapeSelectable原创 2021-01-12 21:13:53 · 233 阅读 · 0 评论 -
IQKeyBoardManager 键盘,空处理
override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) IQKeyboardManager.shared.keyboardDistanceFromTextField = 60 } override func viewDidDisappear(_ animated: Bool) { super.viewDidD...原创 2020-12-21 16:25:55 · 176 阅读 · 0 评论 -
AnimatedImageView 做 (先暂停的 gif 动画 )
KingFisher 的 AnimatedImageView,做 gif 动画,先暂停代码部分: lazy var animatedPart: AnimatedImageView = { let img = AnimatedImageView() if let src = Bundle.main.url(forResource: "xx", withExtension: "gif"){ img.kf.setImage(with: src)原创 2020-12-20 15:44:23 · 1226 阅读 · 2 评论 -
Umeng 分享微信小程序
Umeng 分享微信小程序let messageObject = UMSocialMessageObject() let shareObject = UMShareMiniProgramObject() shareObject.title = "zz" shareObject.descr = "" if let img = UIImage(named: "qu.png"), let da = img.jpegDat.原创 2020-12-04 21:01:37 · 337 阅读 · 0 评论 -
解决微信分享出现的:PBItemCollectionServicer connection disconnected
PB我猜是Peripherals bluetooth蓝牙连接错误也有说Paste Board剪贴板出错解决:用func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool { if url.absoluteString.contains("w...原创 2020-12-04 18:01:18 · 1886 阅读 · 0 评论 -
swift 原生做微信分享
接入:class AppDelegate{WXApi.registerApp("", universalLink: "https://.cn/")func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool { return WXApi.handleOpen(url, delega原创 2020-12-04 10:02:56 · 1069 阅读 · 0 评论 -
bash 批量重命名文件, 对于蓝湖图片
优化:文件编号不合理,则对应的 @2x 图片和 @3x 图片,不好找啊所以优化版本代码for f in *.png; do temp="${f%\)*}" temp="${temp#*\(}" if [[ 2 -ge ${#temp} ]]; then handled="${f//\([0-9]\)/}" name="${temp}_${handled}" echo mv "$f" "$name"; fido原创 2020-12-03 19:24:14 · 106 阅读 · 0 评论 -
歌曲网站,指定 url, 爬取 mp3 和 lyric
下面这篇介绍了,给歌曲名,搜索并下载歌曲歌曲网站,爬取 mp3 和 lyric本篇介绍,给歌曲网站的歌曲资源路径,下载歌曲主要不同点,给歌曲名,歌曲名就到手了,需要搜索歌曲 ID,通过歌曲 ID,拿歌词、歌曲资源路径,最终下载歌曲资源给出歌曲的 url, 该歌曲的 ID 就知道了,需要找出歌曲名称,有歌曲 ID,拿歌词、歌曲资源路径,和歌曲资源从 url 拿 ID info=songUrl.split("=") song_id=info[1]用原创 2020-12-02 20:02:52 · 342 阅读 · 0 评论