Sourcehunt - Swift版- 2017年3月
在Swift月的延续中,这次Sourcehunt充满了Swift的美好。我们将向您展示用于操作字符串的包,创建可重用的样式,显示用户头像,并将FontAwesome的惊人之处带到iOS。我们还获得了一个包,用于像boss一样解析JSON,并为您的下一个(或第一个!)蒸汽应用程序。我说过它都在斯威夫特!
ArtSabintsev /吉他【350★】
这个包受到JavaScript的Voca库的启发,使处理字符串变得非常容易。方法中添加了一些有用的方法字符串
类,它允许您执行从更改大小写到添加填充的任何操作。
假设我有一个应用程序,它接受用户的文件名作为输入。我要确保文件名中没有任何空格或大写的单词。感谢吉他,我可以很容易地做到这一点。
var文件名=“Deathstar Plans.pdf”如果!文件名.isAlphanumeric(){文件名=文件名.snakeCased().小写的()}打印(文件名)// -> deathstar_plans.pdf
这个库可以做的事情还有很多,还有一些特性尚未实现。所以无论你是需要做一些字符串魔术或只是想帮忙,看看没有比吉他更进一步!
psharanda / Atributika【70★】
我们继续讲弦,这是Atributika。假设你在写一个社交应用,你的用户可以在他们帖子的任何地方添加标签。您希望对这些标签进行样式设置,使它们从其余文本中脱颖而出。Atributika让这变得简单。它允许你为你的字符串定义样式规则。下面我为标签创建了一个样式规则:
让myString=“维德今天告诉我他是我爸爸!”我完全吓坏了!# # shouldastayedondagoba”混淆让formattedText=myString.styleHashtags(风格.foregroundColor(颜色.蓝色的).字体(.systemFont(ofSize:15))).attributedString
这就产生了这个:
Atributika还可以解析自定义HTML标记,允许您轻松地设置文本样式,并在整个应用程序中重用样式。下面是使用Atributika定义一些自定义样式的示例:
让e=风格.字体(.italicSystemFont(ofSize:14))让霍奇金淋巴瘤=风格.写成backgroundColor(颜色.绿色)
在这里,我可以使用我的样式来生成一个充满智慧的带属性字符串:
让myString="Do , or Do not 。There is no try. ".风格(标签:e,霍奇金淋巴瘤).attributedString
看起来是这样的:
更好地利用这个库功能的一种方法是在一个服务对象中定义所有样式。这个对象可以用作传递字符串的带属性字符串工厂。这允许你将所有的样式保存在一个地方,并在整个应用程序中使用它们。
ayushn21 / AvatarImageView【173★】
这个包在处理社交应用程序时特别有用。AvatarImageView提供了一个特殊的UIImageView
用于显示用户头像。如果用户没有图片,则AvatarImageView
显示用户的首字母。所需要的只是一个符合AvatarImageViewDataSource
协议,像这样:
结构体MyUser:AvatarImageViewDataSource{var的名字=“Han Solo”}
该对象可以指定几个选项,如图像、特定的首字母、背景颜色等。
可选的,你也可以包括一个配置,比如头像的形状,如下所示:
结构体AvatarConfig:AvatarImageViewConfiguration{var形状:形状=.广场}
然后你可以喂AvatarImageView
您的数据源和配置如下:
myAvatar?.配置=AvatarConfig()myAvatar?.数据源=MyUser()
就这样,你就有了一个头像!
它可能看起来并不多,但这个包消除了从丢失的图像中返回,获得首字母,重塑图像等的需要…
charles-oder / FontAwesomeSwift(1)★)
这个很棒的库带来了FontAwesome的很棒到你的下一个很棒的swift项目!(我已经说够厉害了吗?)如果你不熟悉FontAwesome,我建议你去看看。它是一组矢量图形和CSS,允许您像显示文本一样显示和自定义图标。虽然最初的fontaweesome主要用于web,但这个软件包为iOS, WatchOS, MacOS等带来了同样的简单性和自定义……
API很简单:创建一个FASIcon
对象,样式,并把它放在你想要的地方。您可以转换您的FASIcon
成一个用户界面图像
或NSAttributedString
也这里有几个例子。
首先,我将从FontAwesome图标中创建一个大的UIImage:
myImageView?.图像=FASFontAwesome().userCircleIcon(大小:32).颜色(颜色:用户界面颜色.蓝色的).图像
接下来,为了好玩,我将创建一个带属性的字符串,其中混合了一些图标
让首页:NSAttributedString=FASFontAwesome().homeIcon(大小:17).attributedString让无线网络:NSAttributedString=FASFontAwesome().wifiIcon(大小:17).颜色(颜色:用户界面颜色.绿色).attributedString让myString:NSMutableAttributedString=NSMutableAttributedString()myString.附加(首页)myString.附加(NSAttributedString(字符串:“是哪里?”,属性:零))myString.附加(无线网络)myString.附加(NSAttributedString(字符串:“自动连接。”,属性:零))myLabel?.attributedText=myString
这就是最终结果!
尽管它的名字,这个包实际上支持几个不同的图标包,如材质,离子,以及更多。你甚至可以用你自己的图标来扩展它!
nodes-ios /蛇【70★】
接下来是一个非常完善和高效的JSON解析器,称为Serpent。这个包装真的很酷。它不仅速度极快(他们有数据证明这一点),而且创造者努力使它非常容易使用。
假设我有一个结构体
形状的:
结构体的发烧友{var的名字=“FN93847”varfavoriteColor=“白色”varshootingRangeScore=“2/457”}
我想拉一些突击队员
从一个API。我必须做的第一件事是教Serpent我的数据看起来是什么样子,以及我想如何解析或序列化它。要做到这一点,我的结构体
必须实现可序列化的
协议,它与Serpent捆绑在一起。本协议要求数据映射方式如下:
扩展的发烧友:可序列化的{初始化(字典:NSDictionary?){的名字< ==(自我,字典,“名称”)favoriteColor< ==(自我,字典,“favorite_color”)shootingRangeScore< ==(自我,字典,“shooting_range_score”)}函数encodableRepresentation()->NSCoding{让dict=称为unaryoperations()(dict,“名称”)< ==的名字(dict,“favorite_color”)< ==favoriteColor(dict,“shooting_range_score”)< ==shootingRangeScore返回dict}}
现在,这只是三个属性。为更大的结构编写所有这些代码将是乏味和耗时的。值得庆幸的是,Serpent背后的团队编写了一个名为Model Boiler的小型Mac应用程序,可以为您生成这些代码。要使用它,复制您的结构体
到系统剪贴板并点击cmd + 6 +选项.这将为您的剪贴板填充所有生成的代码结构体
.然后你可以把它粘贴到你想要的地方,如果必要的话可以做任何调整。
stormpath /旋转栅门【95★】
最后,如果你是一个使用Vapor的服务器端敏捷者,你会发现Turnstile特别有趣。Stormpath的人写它是为了管理Vapor应用中的用户身份验证。它使用几个对象来跟踪应用程序中的当前用户,并确保他们经过身份验证。它还提供了在内存中存储用户凭据的对象。如果希望将凭据存储在其他地方,可以编写名为领域
这样做
Turnstile还方便通过Facebook和谷歌等第三方登录。它是一个由理解身份验证的人编写的健壮的库。
每一个这些伟大的软件包都非常有用,所以走出去,给他们一些爱。更好的是,深入研究他们的源代码并提交一些pr。无论你是在寻找一些新的工具还是一个新的项目来贡献,你都有一个很棒的列表。如果你发现了其他很棒的库,想要分享,请使用#sourcehunt和#swift标签告诉我们!