热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

学习CodingiOS开源项目日志(四)

Hello,大家好,好久没写博客了,今天再次来研究研究Coding源码,久违了。 前言:作为初级程序员,想要提高自己的水平,其中一个有效的学习方法就是学习别人好的项目。本篇开始会陆

Hello,大家好,好久没写博客了,今天再次来研究研究Coding源码,久违了。

 

前 言:作为初级程序员,想要提高自己的水平,其中一个有效的学习方法就是学习别人好的项目。本篇开始会陆续更新本人对github上开源的一个很不 错的项目的一点点学习积累。也就是,探究着别人写的源码,我学到了新的什么东西?本人愚拙,而且码龄不多,也就三年左右,水平不高,如有挫解,还望指正。 本人乐爱学习,乐于分享,广结良缘,愿意交流。当然,高手可以飘过。

Coding-iOS项目网址:https://github.com/Coding/Coding-iOS 读者感兴趣的可以自己去下载,当然项目很多第三方框架是没有直接集成进来的,读者自行通过该项目的提示处理。

 

另外还有官网介绍:https://coding.net/u/coding/p/Coding-iOS/git#rd

 

 学习Coding-iOS开源项目日志(四)

内容概要:

1、关于JDStatusBarNotification

2、关于ActionSheetPicker-3.0

3、关于Coding自定义Cell的一个细节:设置高度

4、关于AGEmojiKeyboard(表情键盘)

5、关于baseURL的设计

6、关于HtmlMedia.h/.m文件

 

1、关于JDStatusBarNotification

首先给出github网址:https://github.com/jaydee3/JDStatusBarNotification 点赞两2K多哦,看来很靠谱哦。

下面也展示一下这个控件做了什么:

学习Coding-iOS开源项目日志(四)

 

 

2、关于ActionSheetPicker-3.0

在Coding中,用的ActtionSheetPicker是比较旧的,现在版本更新到3.0,地址:https://github.com/skywinder/ActionSheetPicker-3.0

功能封装的比较好,也是项目开发中个人设置信息模块常用的控件。

 

3、关于Coding自定义Cell的一个细节:设置高度。

在这个TitleRImageMoreCell中有一个cellHeight的类方法。

学习Coding-iOS开源项目日志(四)

然后这个自定义Cell被用的时候:

学习Coding-iOS开源项目日志(四)

这个细节很好,好在假如某个Cell我需要更改它的高度了,就不用去找用到这个Cell的tableview的方法,而是可以直接找到那个Cell里面去修改方法,相同的Cell在共用的时候可以统一修改。

这个用法仅不好的情况是:如果两个共用一个Cell类创建,但是要求高度不一样,就只能另外新建一个了。除此之外,这个将高度封装在Cell内部的用法就比较好。

 

4、关于AGEmojiKeyboard(表情键盘)

在Coding中,表情键盘用了AGEmojiKeyboard这个第三方库:

学习Coding-iOS开源项目日志(四)

第三方库地址:https://github.com/ayushgoel/AGEmojiKeyboard

学习Coding-iOS开源项目日志(四)

除此之外,我们来看看Coding中用的使用:

学习Coding-iOS开源项目日志(四)

而我在官方AGEmojiKeyboardSample源码中,用了Pod继承AGEmojiKeyboard之后,然后看源码:

学习Coding-iOS开源项目日志(四)

可以看得出Coding基本改写来自AGEmojiKeyboard官方源码,所以要学习Coding的AGEmojiKeyboard就有必要研习一下源码喽。

 

5、关于baseURL的设计

在Coding中,是通过NSObject+Common.h/.m这个类别来拓展很多公共的方法,本人自以为是的觉得这是个可以取代大部分宏定义的一个简易的做法。另外在Swift中已经没有#define定义宏了,但是可以通过类似的常量定义或者是func函数来替代它,可以google或者直接阅读本人搜索到的如何为Swift进行宏定义的相关内容,但是Coding用的还是OC,我们接着了解一下Coding中一些做法:

学习Coding-iOS开源项目日志(四)

当然我前面提到的替代宏只是一个想法,正好和Swift是迎合的,是一个可以有可以做的想法。Swift有一个特点是全局,一个函数不用导入就能容易被别的文件中调用。

上图所呈现的一个设计,将端口和IP地址独立出来写成baseURLStr,并通过本地序列化来存储和获取。而获取baseURLStr的方法是通过NSObject拓展的类别,通过NSObject即可调用这个方法。

 

6、关于HtmlMedia.h/.m文件 

这个是解析html之后获取的资源模型对象,解析html文件之后,获取的得到的其实是html源码中有用的部分,所以看下图,我特意添加了打印看看是什么内容:

学习Coding-iOS开源项目日志(四)

接着我运行Coding,然后跳转到冒泡广场页面

学习Coding-iOS开源项目日志(四)

然后我将这部分html代码拷贝到自己用记事本新建的简单的html文件里:

1 <p>下午五点多就到达了目的地稻城县城境内,住在了一个具有很好地理位置的酒店,但是没有网络没有热水,我好像高反了,一天坐车,看到了许多的美丽景色,好漂亮好漂亮,明天景区的最低海拔四千两百多米,希望不要高反了……
2     <a href="https://dn-coding-net-production-pp.qbox.me/bef3c579-dc9d-463d-b54f-51da3391cfeb.jpg" target="_blank" class="bubble-markdown-image-link" rel="nofollow">
3         <img src="https://dn-coding-net-production-pp.qbox.me/bef3c579-dc9d-463d-b54f-51da3391cfeb.jpg" alt="" class="bubble-markdown-image">
4     a>
5     <a href="https://dn-coding-net-production-pp.qbox.me/05309c05-cbcd-4fca-8627-9143b27b922f.jpg" target="_blank" class="bubble-markdown-image-link" rel="nofollow">
6         <img src="https://dn-coding-net-production-pp.qbox.me/05309c05-cbcd-4fca-8627-9143b27b922f.jpg" alt="" class="bubble-markdown-image">
7     a>
8 p>

接着通过浏览器打开它,一段文字加两张好大的图片:

学习Coding-iOS开源项目日志(四)

再看Coding:

学习Coding-iOS开源项目日志(四)

然后我们接着看那部分代码:

学习Coding-iOS开源项目日志(四)

所以,接着就要结合Coding这里学习学习点hpple的用法喽,在Coding的介绍官网也提到:

关于如何正确显示冒泡的内容:api返回的数据里面,冒泡内容都是html格式,需要做一下预处理;其实私信、讨论里面的内容也是html。解析html的类名是HtmlMediaItem,它是先用hpple对html进行了解析,然后把对应的media元素和对应的位置做一个存储,显示的时候便可以根据需要来显示了。

然后我们可以进入hpple学习学习喽。于是,我就简单的了解了一下这个hpple框架:iOS开发之第三方库的学习--hpple的使用

 


推荐阅读
  • EPICS Archiver Appliance存储waveform记录的尝试及资源需求分析
    本文介绍了EPICS Archiver Appliance存储waveform记录的尝试过程,并分析了其所需的资源容量。通过解决错误提示和调整内存大小,成功存储了波形数据。然后,讨论了储存环逐束团信号的意义,以及通过记录多圈的束团信号进行参数分析的可能性。波形数据的存储需求巨大,每天需要近250G,一年需要90T。然而,储存环逐束团信号具有重要意义,可以揭示出每个束团的纵向振荡频率和模式。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • 使用在线工具jsonschema2pojo根据json生成java对象
    本文介绍了使用在线工具jsonschema2pojo根据json生成java对象的方法。通过该工具,用户只需将json字符串复制到输入框中,即可自动将其转换成java对象。该工具还能解析列表式的json数据,并将嵌套在内层的对象也解析出来。本文以请求github的api为例,展示了使用该工具的步骤和效果。 ... [详细]
  • 推荐系统遇上深度学习(十七)详解推荐系统中的常用评测指标
    原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ... [详细]
  • 本文介绍了一些好用的搜索引擎的替代品,包括网盘搜索工具、百度网盘搜索引擎等。同时还介绍了一些笑话大全、GIF笑话图片、动态图等资源的搜索引擎。此外,还推荐了一些迅雷快传搜索和360云盘资源搜索的网盘搜索引擎。 ... [详细]
  • Windows7企业版怎样存储安全新功能详解
    本文介绍了电脑公司发布的GHOST WIN7 SP1 X64 通用特别版 V2019.12,软件大小为5.71 GB,支持简体中文,属于国产软件,免费使用。文章还提到了用户评分和软件分类为Win7系统,运行环境为Windows。同时,文章还介绍了平台检测结果,无插件,通过了360、腾讯、金山和瑞星的检测。此外,文章还提到了本地下载文件大小为5.71 GB,需要先下载高速下载器才能进行高速下载。最后,文章详细解释了Windows7企业版的存储安全新功能。 ... [详细]
  • 本文详细解析了JavaScript中相称性推断的知识点,包括严厉相称和宽松相称的区别,以及范例转换的规则。针对不同类型的范例值,如差别范例值、统一类的原始范例值和统一类的复合范例值,都给出了具体的比较方法。对于宽松相称的情况,也解释了原始范例值和对象之间的比较规则。通过本文的学习,读者可以更好地理解JavaScript中相称性推断的概念和应用。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 本文介绍了九度OnlineJudge中的1002题目“Grading”的解决方法。该题目要求设计一个公平的评分过程,将每个考题分配给3个独立的专家,如果他们的评分不一致,则需要请一位裁判做出最终决定。文章详细描述了评分规则,并给出了解决该问题的程序。 ... [详细]
  • 原文地址:https:www.cnblogs.combaoyipSpringBoot_YML.html1.在springboot中,有两种配置文件,一种 ... [详细]
  • 生成对抗式网络GAN及其衍生CGAN、DCGAN、WGAN、LSGAN、BEGAN介绍
    一、GAN原理介绍学习GAN的第一篇论文当然由是IanGoodfellow于2014年发表的GenerativeAdversarialNetworks(论文下载链接arxiv:[h ... [详细]
  • 闭包一直是Java社区中争论不断的话题,很多语言都支持闭包这个语言特性,闭包定义了一个依赖于外部环境的自由变量的函数,这个函数能够访问外部环境的变量。本文以JavaScript的一个闭包为例,介绍了闭包的定义和特性。 ... [详细]
  • CEPH LIO iSCSI Gateway及其使用参考文档
    本文介绍了CEPH LIO iSCSI Gateway以及使用该网关的参考文档,包括Ceph Block Device、CEPH ISCSI GATEWAY、USING AN ISCSI GATEWAY等。同时提供了多个参考链接,详细介绍了CEPH LIO iSCSI Gateway的配置和使用方法。 ... [详细]
author-avatar
帅哥刘常胜
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有