让自己的开源项目支持CocoaPods,最后的守护者
分类:技术

图片 1

 测试的时候找个自己封装的方法或UI控件就可以了 这里用我刚封装的Redirect重定向的请求体为例

图片来源于网络

原文链接:

1, 在github上创建一个Redirect,重要:记得选择开源协议 (MIT)(如果木有GitHub那先百度一下)

楔子

月凉如水,微弱的光洒在树林,风来,惊起“呱呱”的鸦声一片。风吹动着乌云,遮住了仅有的一点点亮,鸦声过后,留下死一般的寂静。

急促的喘息声由远及近,在这黑夜里,尤显得格外突兀。一男子手里紧紧握着一支竹竿,支撑着他的身体一步一步前进。他身上的衣服破烂不堪,脸上还有点点血迹,他慌乱的步伐出卖了此时的心情。他不时地往后张望,神色紧张而又疲惫,虽已累及,却依然没有停下脚步。

他现在心中只有一个信念,一定要找到那个地方,只有这样,一切都还来得及。

原本是打算昨天昨天下午的时候就写一篇关于前端图片延迟加载的详细技术的博客的,没想到下午公司项目出现了一些问题,所以一直在改代码进行调试,今天白天一整天又在外面跑,回来已经傍晚了,刚吃完饭,就想着赶紧补上,这样很多不懂这方面具体实现的小伙伴们也能早点学习经验。

图片 2

正文

夏日的天气犹如孩子的脸,说变就变。白日里还烈日当空,此时却是风雨大作。

傍晚街上散步的行人被这突如其来的雨弄得措手不及,急忙抱着头想找个暂时的避雨处。陋巷里那块写着“當”字的破招牌在风雨里摇摇欲坠,一梳着两个小辫子的姑娘紧张地站在门口,眉头皱得能滴出水来。

“七七,把门关了吧!今天下雨,估计也没啥人来了!”

一男子慵懒的声音从屋子里面传来,隐约间可见缕缕的茶烟,茶香满室。七七嘟嘟小嘴,有些担忧地看着那块招牌。

“大叔,这招牌会不会掉下来啊!”姑娘伸出右手,想去接屋檐下滴落的雨水,雨滴溅在她娇嫩的手心,她急忙将手缩回,好凉。

被唤作大叔的男人坐在太师椅上,将手中的帐薄放下,左手端起桌上茶杯的茶盏,右手揭起茶盖,叩几下杯缘,轻轻吹了口气,抿了抿,盖上茶盖。

“丫头,你就把你的心放进肚子里吧,从我来这儿,它就一直都是这样!听我的,将门关上,你也早点休息,明天好交接工作。”

“哦!”

当铺的门就像外面的那块招牌一样,充满了古朴感。

“吱呀~” 七七将门轻轻拉在一起,正打算将锁扣上时,突然伸出一只布满伤痕的手将门推开,吓得七七大叫着跳到了大叔身边。大叔见状,赶紧放下手中的东西上前查看。那人没了依仗直接摔在了地上,似乎是昏迷了过去。

见身形是个男人,似乎赶了好长的路。雨水已经将他身上的尘土洗净,隐约间可见身上可怖的伤口。大叔将七七安抚好后,蹲下摸了摸他的脉,松了口气,只是累极而已,昏睡中的男人,嘴里还一直念着十二号当铺。他犹豫了一会儿,叫来七七,让她协助他将这个男人搬到客房去。

骤雨过后,便是晴天。

客房窗户恰好向着东方,初升的太阳刚好照在床头。男人睁开眼,愣了几秒,似乎在辨认自己身在何处。他挣扎着起了床,双腿的无力让他无法站立,他只得扶着墙一点一点地走出了房门。

这是间古朴的房子,小小的四合院中间一颗高大的无名树,枝繁叶茂,恰好将整个屋子笼罩着。男人看着院子中间一个二十七八左右的年轻人拿着个水壶偷偷摸摸地似乎要做些什么。

“请问……”

“啊,你醒啦!”年轻人被突然的声音打断,赶紧将手中的水壶藏在身后,有些尴尬地挠了挠头,神秘兮兮地向他靠近,“你千万不要告诉别人?”

男人一头雾水,不过他也不想节外生枝,只能点点头。

“请问这里是12号当铺吗?”

“你自己找过来的你还问!”年轻人拿出水壶痛快地往嘴里灌了一口,大剌剌地用袖子抹了抹嘴,眼角瞄了瞄眼前这个脸色苍白的男人,“这就是你要找的地方,我是这里的掌柜之一,最帅最有型的——自说自话猫。喵~”

“醉猫,你又在上班时间偷喝酒,看我不在小本本上记下来,扣你工资!”

一浑厚的男人声音传过来,吓得那只猫收起了刚刚还锋利的爪子,垂着头站在墙边,像个听话的学生。

男人看着走过来的那人,是昨天他见到的那个自称大叔的人。大叔似笑非笑地看了看旁边的醉猫一眼,径直走向男人,抓起他的右手开始细细把起脉来。

约莫一分钟过去,大叔将他手放下。

“好很多了,看来生命力还是挺顽强的。说吧,拼了命也要找我们12号当铺,昨天还把我们的小姑娘给吓到了,到底所为何事?”

男人被刚刚的一系列变故搞得有些蒙,被大叔提问,他才反应过来自己此行的目的。

“我叫何林枫,是个探险爱好者。我和我的妻子相识在一次探险活动中,两人相识相知相爱,最后结婚在一起。即使是在婚后,我们也会每年至少会参与一次探险活动。一周前我们参加了一支探险队前往落鸣山,而此地对于我们来说,本来应该算是一次小小的旅行而已。没想到进山后才发现这个地方地势奇特,听队里一些有研究的队员说,某些地方甚至似乎出现了类似八卦阵法之类的东西,不过我们也没有放在心上,感觉这些都是吹牛。我和我妻子在一次考察路线的时候,与大部队走散,幸好我们身上还带有一些干粮和指南针,以我们的经验来说,走出这篇大山也并不是什么难事。如果没有碰到那个奇怪的黑影……”

何林枫似乎是想到了什么恐怖的事情,说到后面声音越来越颤抖,手也渐渐支撑不起整个身体,干脆直接坐在地上,双手抱头。似乎在恐惧,又似乎是懊恼。

“总之那个黑影将我妻子抓了去,我找遍了所有的地方都没有找到,只是在妻子被抓走之前,似乎有听到她说什么12号当铺,我就一路打听着走了过来,只希望你们能救救我妻子,我不能没有她!”

激动的何林枫突然紧紧地抓住大叔的小腿,大叔和醉猫相视一眼,赶紧将他扶了到一旁的椅子上坐下。

醉猫掂了掂手中的酒壶,看了看眼前痛苦的何林枫,收起了顽劣。

“情况我们已经大概了解,不过我们当铺的规矩,你依然必须得遵守。”

“我知道,以‘酒’换‘故事’,我也不知道我身上有什么能被你们瞧得上的,只希望你们能帮我救出我的妻子,你们要什么,我都愿意给。”

“好说!”

言罢,大叔拖着醉猫往外走去,徒留何林枫一人暗自神伤。

“哎哎哎,你放手,莫名其妙得将我拖到这个破林子里干嘛?”醉猫好不容易挣开大叔的钳制,揉了揉被捏得生疼的手腕。

“救人。他的妻子是在这里失踪的,我们就从这里找起!”大叔理了理自己略沾了些尘土的衣服,然后大步向林子里面走去。

醉猫见状赶紧追上去,一路叽叽喳喳,让人耳朵疼。

“你真打算去救那女人啊?那男人身上有什么东西可取的嘛?再说了那女人也不知是死是活,到时候救个死人回去不是晦气吗?”

大叔皱了皱眉头,“你要是再嚷嚷,我把你今天偷喝酒的事情告诉情话他们。”

醉猫一听,赶紧闭嘴,乖乖地跟在大叔身后。

越往里走,路的标记越来越少,走到最后两人几乎都是手脚并用,而且身上也不小心划拉了几道口子。

醉猫心疼地看着自己的衣服,这是自己刚刚才斥巨资买的,还没穿几次,如今变得和街旁的乞丐无两样了。然而今日自己有把柄被眼前的人抓住,一切抱怨的话,也只能在肚子里过过瘾。

不知走了多久,大叔终于停下了脚步,醉猫抬头一看,一地长满青苔的砖瓦,依稀可见曾经的繁华。

“这不是……”醉猫似乎有些惊讶。

“不错,就是你想的那个!”大叔抬脚,继续往那片断壁残垣里走去。

醉猫正想跟上,突然一阵狂风吹过,他一个不稳,跌坐在地上。

“哎哟!妈呀,疼死我啦!”醉猫爬起来,双手护着屁股,难得正经地打量着周围,“看来,那两个人,应该是遇到了它。”

这时大叔已经走进那片废墟的中心,地上似乎有个圆形的类似花缸的东西,上面一些逐渐腐朽的签条依稀可见。一道巨大的黑影突然从大叔的旁边掠过,大叔一个箭步,跟随黑影而去,最后在废墟边上的一棵千年古木旁停住了脚步,醉猫也赶了过来。

醉猫看了看这个树,嘴里开始念动咒语,最后大喊一声:

“破!”

一个鹿头人身的妖从树上落下,它爬起来,拍了拍自己宽大衣服上沾的东西,抬起来,似乎有些诧异。

“是你们!”

“好久不见,山鸣!”

那唤做山鸣的妖看了看眼前的大叔和醉猫,叹了口气。

“哎~我知道你们是来干嘛的!那女人在前面山洞的一个石床上,你们带她走吧!”

醉猫似乎有些吃惊,没想到此行的任务完成得这么简单,正想拉着大叔去把人接了就走,大叔却丝毫没有要走的打算,他只是直直地看着山鸣。

“你现在,还好吗?”

“就这样吧,估计不久,我也要卸任回老家了!”山鸣苦笑。

“当年邀请你下山,与我一同经营这12号当铺,你始终还是不愿意。”

“你知道我的,我向来是不愿意隐于凡尘中,与人类打交道。此次要不是这两人误闯了我的阵地,我也不会现身将那女人捉了去,也只想着给他们一个教训。”

“我知道,你一向是刀子嘴,豆腐心。你一直守护在这儿,不也是为了人类吗?”大叔顿了顿,“我再一次邀请你来我们当铺,跟我下山吧!”

山鸣哈哈大笑,“大叔,你还是不要在我身上费功夫了!我注定是要生于厮,埋于厮,你赶紧救人去吧。再晚一步,我也不能保证她还能不能活。”

说完,头也不回地飞身离去。

大叔呆呆地看着山鸣离开的方向,直到醉猫叫他,他才回过神来。

“走吧,救人去!”

“哦!”醉猫挠了挠头,跟着大叔往山洞的方向走去。

何林枫抱着自己死里逃生的妻子,激动地流出眼泪。好在她并未受到任何的伤,只是暂时昏迷了过去,一两个小时后就会醒来。他紧紧地抓住醉猫的手,千恩万谢不知从何说起。一旁的大叔悠哉地喝着茶,对醉猫的求救信号视而不见

醉猫送走了这对倒霉的夫妻,看了看身后的大叔,一言不发地看着他,直把他看得发毛。

“好吧,我知道你肯定有什么想问我的,你说吧?”大叔端起茶杯,不急不缓地说道。

“你是不是早就知道今天会发生这样的事情,所以你才会在本不该你当值的这天,主动留下来。”

“是!”

“你是不是知道那个女人是被妖怪抓走了,所以你才会直接就往那里走?”

“是!”

“你是不是认识那个妖怪,而且还很熟?”

“是!”

“请说出你的故事!”

“噗,”一不小心,大叔嘴里的一口好茶全喷了出来。他慢条斯理地扯了一张纸将身上的茶渍勉强擦了擦,“好吧,既然你诚心发问了,我就大发慈悲告诉你吧!”

“山鸣虽长着鹿首人身,却并不是妖,而是这落鸣山的一方山神,一生的职责便是守护这座山的安宁。山神的法力强弱,主要是由人类的供奉来决定的,香火越旺,法力越强,反之,法力越弱。相信你也知道,我们看到的那片废墟,就是曾经的山神庙,随着现代科学的发达,人类的信仰也越来越弱,供奉山神的人也越来越少。到了山鸣这一届,甚至连庙都没了,虚弱如他,估计也没有多少年可活了,不然以你的那点三脚猫的功力,怎么可能逼得他献身。”

醉猫不以为然,但也没有怼回去。

“那,以后这座山还会有山神吗?”

“人类信仰的没落,也就注定着神学消失!其实也说不准是好是坏。总之,现在的人不都信奉人定胜天吗?山鸣,大概也是这最后的守护者了吧!”

醉猫陷入沉思,大概也在为某些东西的遗失而感到惋惜。他突然想到什么,大声道:

“对了,大叔,你问那个男的要了什么‘酒’啊?”

“不过是一些记忆罢了!我希望山鸣能安安静静的在他最爱的地方,不被别人打扰。”

大叔起身,看着门外,那古朴的招牌,在微风中摇摆。


十二号当铺

前端页面的用户体验对于一个网站来说是至关重要的,我们在访问一些图片量比较大的网站的时候,往往会有这样的感受:显示在我电脑屏幕可视区域的图片总是不能及时的刷出来,这就造成了对于一些没有什么耐心的用户而言,他们就不愿意多等下去,索性直接关闭了网站去看其他的网站,这就使得本网站的用户量的流失,这往往是一个网站最不愿意看到的情况,那么对于这样的情况而言,开发者们不断的努力,很快就想到了解决的方案,让在可视区域的图片立即加载进来,而让不在可视区域并且需要通过滚动条进行滚动显示的图片在图片滚动到可视区域内再显示出来,这就比一次性把所有的图片资源加载进来从而造成图片刷新较慢的用户体验好的多的多。

2, 使用 Github Desktop Clone (克隆) Redirect 到电脑桌面 

那么,图片延迟加载的技术具体如何实现呢?下面来做详细的介绍:

注: 修改Redirect文件里的东西记得及时更新,如何使用Github Desktop请百度

首先,定义图片为三列,一共有5行,具体代码如下:

3, cd到当前目录

图片 3

$ cd Redirect

图片 4

4, 创建一个podspec文件,命令:

里面用到的bootstrap的布局技术(当然,这不是重点),请看img标签中的src,一开始我们并没有给它具体的图片的资源路径,而是自己定义了一个属性 x-src,该属性的值是图片图片的资源路径,每一行的img都是如此,接下来,当页面载入的时候,我们使用jquery(当然,你想javascript原生的代码也可以,我这里只是为了省时间而已)来循环遍历每一个img,判断每一个图片是否在当前可视区域内,是则显示图片,否则稍后处理,这里需要知道三个数据:

$ pod spec create Redirect

注:因为我所写的是当图片的一半进入的浏览器的可视区域内才将这张图片进行加载,所以需要第三个数据,这个看个人的需求是什么,      如果你的需求是图片只要已进入可视区域内就加载,可直接忽略第三个数据!!!!

5, 编辑 podspec文件,这里是用vim打开的,命令:(当然使用文本编辑器打开也可以)

1:浏览器可视区域的高度

$ vim Redirect.podspec

2:图片相对于文档的偏移量(这里只需要高度上的偏移量)

6, 创建之后会自动生成一个模板,里面会有详细的注释,我们只需要按需要修改这个文件即可,

3:图片元素本身的高度

下边这个是测试的时候我编辑的 (如果需要更更多的配置 可以参考别的开源项目的podspec文件):

如果图片先对于文档的偏移量+图片元素本身的高度的一半    <  浏览器可视区域的高度,即表明图片已经有一半进入的可视区域了,那么我就应该要把这张图片加载进来了,可是img标签的src是为空的,x-src的值才是图片的资源路径,这个时候就需要用jquery将img 标签的x-src值传给src,从而将图片加载进来,具体实现代码如下:

(注: 以#开头的是可以删掉滴)

图片 5

Pod::Spec.new do |s|



  s.name         = "Redirect"
  s.version      = "0.0.1"
  s.summary      = "Redirecting Requests."
  s.description  = <<-DESC 
                          This is a Redirecting Requests.
                   DESC
  s.homepage     = "http://www.cnblogs.com/ljcgood66/"
  s.license      = "MIT"
  s.author       = { "LiJunCheng" => "1139981137@qq.com" }
  s.platform     = :ios
  s.source       = { :git => "https://github.com/ganlinmeng/Redirect.git", :tag =>"0.0.1" }
  s.source_files  = "Redirect", "Redirect/**/*.{h,m}"
  s.exclude_files = "Classes/Exclude"
  s.framework  = "UIKit"
  # s.frameworks = "SomeFramework", "AnotherFramework"
  # s.library   = "iconv"
  # s.libraries = "iconv", "xml2"


  # ――― Project Settings ――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
  #
  #  If your library depends on compiler flags you can set them in the xcconfig hash
  #  where they will only apply to your library. If you depend on other Podspecs
  #  you can include multiple dependencies to ensure it works.

  # s.requires_arc = true

  # s.xcconfig = { "HEADER_SEARCH_PATHS" => "$(SDKROOT)/usr/include/libxml2" }
  # s.dependency "JSONKit", "~> 1.4"

end

具体的效果如下:

s.name:名称,pod search 搜索的关键词,注意这里一定要和.podspec的名称一样,否则报错
s.version:版本号
s.ios.deployment_target:支持的pod最低版本
s.summary: 简介
s.homepage:项目主页地址
s.license:许可证
s.author:作者
s.social_media_url:社交网址
s.source:项目的地址
s.source_files:需要包含的源文件
s.resources: 资源文件
s.requires_arc: 是否支持ARC
s.dependency:依赖库,不能依赖未发布的库
s.dependency:依赖库,如有多个可以这样写

图片 6

(注: 也有这样写: s.license= { :type => "MIT", :file => "LICENSE" }

你可以在控制台看到,虽然我们有5行图片,每行有3列,但加载进来的图片只有第一列(图片高度有超出一半的img才会加载图片的资源进来),其他的都没有加载进来,这就使得图片的刷新会很快出现效果,那么接下来,用户需要看到更多的图片,这个时候需要进行滚动条往下滚动,去刷新更多的图片,那么这个时候我们除了上述的3个数据之外,还需要知道当前滚动条滚动的距离,如果:

7, 创建tag,并推送到github,依次执行以下命令:

图片先对于文档的偏移量+图片元素本身的高度的一半    <  浏览器可视区域的高度  + 当前滚动条滚动的距离,那么表明当前图片已经在可视区域内,并且图片有一半以上的高度是在可视区域内,那么将图片进行加载进来,具体代码如下:

$ git add .
$ git commit -m "0.0.1"
$ git tag 0.0.1
$ git push --tags
$ git push origin master

本文由奥门金沙网址发布于技术,转载请注明出处:让自己的开源项目支持CocoaPods,最后的守护者

上一篇:当我在写千字文的时候我在写神马,类与对象 下一篇:苹果电脑上安装window系统,详情请看正文
猜你喜欢
热门排行
精彩图文