Tag: github

2017年3月:四个新的GitHub开源iOS库

我们每月的GitHub摘要又回来了,今天我们在谈论新的Swift和Objective-C库,这些库可以简化iOS开发人员的工作。 上帝之眼 斯威夫特,本月约2千颗星 GodEye是Swift库的开源集合,可让您自动显示日志,崩溃,网络,CPU,RAM和网络信息等。 它具有非常全面的结构,包含多个子项目。 甚至有一本关于这个巨大的实用工具的开发过程的书。 需要明确的是,这本书是中文的,但这是个好主意。 编写一行代码就足以在您的项目中实现GodEye。 GodEye不仅包括用于监视您的应用程序的库,还包括用于显示信息的用户界面。 何时使用: 当您想以方便的格式显示所有调试信息时。 以及更多:2017年3月:四个新的GitHub开源iOS库

Swift Facebook图像选择器

在一个星期一的早晨,您的老板给您一个注释:“嘿,如果您添加一种简单的方法让用户从他的Facebook帐户中选择他的个人资料图片,该怎么办? 不到两个小时,就可以使用Facebook SDK做到这一点。” 很好! 让我们看一下惊人的Facebook文档,他们可能做了一个本机图像选择器,可以记录用户,检索用户的相册并显示每个相册的图片。 事实证明,没有使用原生iOS Facebook SDK进行优雅的Facebook图像选择器的简便方法。 您将需要处理Facebook登录,拒绝照片权限,从Graph API解析用户的相册,加载相册封面,解析相册的图片,加载和缓存图片。 真是一个痛苦的任务! 就像您的老板所说的,所有这些都在不到1或2个小时内完成。 有解决办法 ! 🎉 有几个网站和旧图书馆允许这样做。 仅这始终是旧的Swift版本或旧的Facebook SDK。 这就是为什么我决定制作自己的Swift Facebook选择器“ GBHFacebookImagePicker”并根据MIT许可将其发布给OpenSource社区的原因。 主要特点 选择器提供了一种非常简单的方法来向用户询问Facebook的照片许可权,并显示所有Facebook的帐户相册。 显示相册图片时,用户可以轻松选择其中的一张,然后选择器以最高质量下载所选图片。 选择器还提供了一种翻译弹出窗口的简单方法。 安装 GBHFacebookImagePicker可通过CocoaPods获得。 要安装它,只需将以下行添加到您的Podfile中: 豆荚“ GBHFacebookImagePicker” 用法🗝 您需要正确设置您的应用程序才能与Facebook一起使用:https://developers.facebook.com/docs/ios/getting-started 导入选择器: import GBHFacebookImagePicker 实现GBHFacebookImagePickerDelegate协议: // MARK: – GBHFacebookImagePicker Protocol func facebookImagePicker(imagePicker: UIViewController, didSelectImage image: UIImage?, WithUrl url: String) { // Do whatever you […]

Swift如何改善自动版式?

如果使用自动布局,请举手。 以编程方式举手。 如果您想要一种简单的书写方式,请举手。 有很多开源项目试图使处理自动版式变得更容易。 (即砌体,PureLayout,制图) 我在这里通过介绍DHConstraintBuilder向您展示更快捷的方法。 您可能会想,“我为什么要打扰您?”,这是一个很公平的问题。 DHConstraintBuilder可以使用最少的代码来表达约束,但又不会失去任何意义。 它可以直观地显示约束的外观,同时生成有用的约束。 假设您有两个视图,并且要在它们之间放置默认填充。 使用自动版式时,该距离通常为8像素。 下面是将DHConstraintBuilder与NSLayoutConstraint进行比较的示例。 代码看起来如何? (以下两个示例在功能上等效) 使用NSLayoutConstraint: 使用DHConstraintBuilder: 让我们分解一下: // 1 -greenView和redView在水平轴上之间有15.5像素 -greenView在其超级视图的前导约束上具有默认填充 -redView在其超级视图的尾随约束上具有默认填充 // 2 -blueView在其超级视图的前导约束上具有默认填充 -blueView在其超级视图的尾随约束上具有默认填充 // 3 -greenView在其超级视图的顶部约束上具有默认填充 -greenView在垂直轴上具有与blueView的默认距离 -blueView在其超级视图的底部具有默认填充 // 4 -redView在其超级视图的顶部约束上具有默认填充 -redview在垂直轴上具有与blueView的默认距离 // 5 -greenView和redView具有相等的宽度 // 6 -greenview和blueView的高度相等 我可能有偏见,但是DHConstraintBuilder确实看起来更小,更简洁并且更易于阅读。 它消除了两个常见错误:忘记将translatesAutoResizingMaskIntoConstraints设置为false,以及忘记将视图添加到父视图。 可能突出的一件事是使用 ()|-^ ^-| () 同样,这是Visual Format对 |- -| 不用说,但是此API面向swift3。它必须是swift,才能利用重载的运算符。 DHConstraintBuilder在GitHub上可用,并且为ios 8及更高版本。 这是我的第一个开源项目。 […]

Vapor APT 2.0 —拥抱开源

我们很早就决定建立一个APT存储库,以使人们可以轻松地在Linux上安装Swift和我们的Vapor Toolbox。 长期以来,它很快就被构建起来,但是它的确意味着很难维护。 展望未来,我们最近发布了APT 2.0版。 它是完全开源的,能够使我们的社区更紧密地融入流程。 我们是一家非常注重开源的公司,主要是因为我们的公司基于开源。 这也确实意味着我们拥有社区构建工具,这些工具可以从我们在APT上的工作中受益,并将工具放置在同一位置。 为了简化此过程,所有软件包现在都位于GitHub上,并且一旦批准,我们将使用CI系统在APT上构建新版本。 这个过程很简单。 用户在新的PullRequest中将基于某些模板的包推送到GitHub。 为了确保我们保持安全性,管理员需要进入并查看PR。 如果获得批准,则管理员只需向PR回复/approved ,之后,我们将运行一个Jenkins实例,它将获取更改,并启动一个Vapor CLI应用程序,该应用程序负责构建APT。 完成后,Jenkins将通过我们的vapor-ci-robot用户进行报告,并提供状态和日志链接 我们当然要添加很多东西,其中一项是我们现在正在构建的,并且令人兴奋的是,该工具可以自动测试新PR的建立和设置是否正确,这意味着我们将在沙盒环境中进行构建和设置。 完成所有工作后,管理员便可以批准该应用程序,知道是否一切正常。 我们还计划能够构建到目标操作系统。 这将为自动构建系统增加更多的灵活性。 只需访问http://github.com/vapor/apt,这里还有有关如何通过Linux上的APT安装Swift和Vapor的文档。 APT只能用于安装Swift,因此它不仅意味着可以与Vapor一起使用,而且还可以与其他服务器端Swift框架一起使用。

使用Travis CI和GitHub进行iOS的持续部署和持续集成

让我们看看如何将GitHub项目与Travis链接。 使用您的GitHub帐户登录Travis网站。 对于私人存储库,您需要注册一个Travis Pro帐户。 登录后,您必须为Travis启用项目。 导航到配置文件页面,其中列出了您的所有GitHub项目。 请注意,以后创建新存储库时,请使用立即同步按钮。 Travis仅偶尔更新列表 现在使用开关启用您的项目。 之后,您应该在GitHub项目设置中看到Travis挂钩。 下一步是告诉Travis一旦收到更改通知该怎么办。 最小的项目配置 Travis CI需要有关您的项目的一些基本信息。 在项目根目录中创建一个名为“ .travis.yml”的文件,其内容如下: 自定义构建命令 Travis从命令行构建您的项目。 因此,第一步是使您的项目在本地编译。 作为Xcode命令行工具的一部分,Apple附带了xcodebuild 。 打开您的终端并输入: xcodebuild —帮助 这应该列出xcodebuild的所有可能参数。 如果失败,请确保正确安装了命令行工具。 这是典型的构建命令的外观: xcodebuild -project {project} .xcodeproj -target {target} -sdk iphonesimulator ONLY_ACTIVE_ARCH = NO 设置“ iphonesimulator” SDK以避免签名问题。 这是必需的,直到我们稍后包含证书为止。 通过设置“ ONLY_ACTIVE_ARCH = NO”,我们确保可以针对模拟器架构进行构建。 您还可以设置其他属性(例如,配置)。 输入 ‘ man xcodebuild’以阅读文档。 对于CocoaPods项目,您必须改为指定工作区和方案: xcodebuild -workspace {workspace} […]

如何使您的存储库自述文件看起来不错!

存储库自述文件对我总是很满意。 它们都有不同的风格,包括图像,GIF,徽章,链接等。它们不仅可以看上去,而且可以传达有关该项目进行中的大量信息,并且可以吸引人们的注意力。 可悲的是,我们大多数人,至少在项目开始时,没有浪费时间使我们的回购自述文件大放异彩。 今天,我将向大家展示适合您的回购交易的简便程度,使其看起来比以往更加专业。 免责声明:**这 如果圣诞节和新年前夕之间的一周内上线,则发布。 因此,尽管我可以做一些需要更少时间的事情,但仍然很重要。 继续阅读以了解如何使您的仓库回升。 在..之前很伤心.. =( 您可以在屏幕快照中看到我的Marvels App博客文章存储库的外观。 没有真正的吸引力。 对我而言,这仅是在提醒人们机会不足。 分享有关我的项目和目标的更多信息的机会。 **如果您尚未查看marvel的应用博客文章系列,则可以在这里进行。 您会发现许多有趣的内容,内容涉及如何使用许多不同的pod和工具从头开始创建应用程序,从而使您的生活更轻松。 给我看看更好的.. !! 本自述文件中有几件事正在进行,因此让我介绍一下: 现在它具有徽章,在顶部显示相关信息 它具有锚点导航,允许读者跳至特定部分。 它有一个屏幕截图,显示了应用程序流程以及用户对项目的期望。 它有一个动机部分,回答一些问题,例如: 这是什么? 我为什么要在乎呢? 它与他人有何不同? 这个存储库的目标是什么 ? 它具有发布链接,将链接带到页面。 它具有安装和测试部分,提供有关如何运行这些步骤的说明。 最后但并非最不重要的一个许可证部分,显示代码的可用性 。 这可以像您认为的那样广泛。 您可以使用一些您喜欢的开源项目作为自己存储库的灵感源。 *您可以在这里查看 github上的页面。 自述文件的资源.. 在下面,您可以找到一些资源,这些资源可以在上面提到的仓库转换过程中提供帮助。 去看一下! shields.io是一个了不起的工具。 它允许您粘贴存储库URL,并可以根据您的回购文件推荐徽章。 Shields.io:开源项目的质量元数据徽章 我们提供快速且可扩展的信息图像,作为GitHub,Travis CI,Jenkins,WordPress等的徽章。 Codecov和工作服可以将您的代码覆盖率百分比显示为自定义徽章。 太棒了!! 连续代码覆盖率 连续代码覆盖率。 托管覆盖率报告与GitHub,Bitbucket和GitLab高度集成。 浏览器… codecov.io 工作服 修改说明 coveralls.zendesk.com […]

作法:建立.gitignore档案

.gitignore告诉git它应该忽略哪些文件(或模式)。 通常用于避免从工作目录中提交对其他协作者无用的临时文件,例如编译产品,IDE创建的临时文件等。 要创建您的.gitignore文件,您可以访问以下网站:www.gitignore.io。 Gitignore.io将生成一个网页,稍后您将需要该URL。 生成文件后,请按照以下步骤在git上对其进行配置。 打开终端并找到您项目的.git: 2.使用wget -O .gitignore’generatedURL’创建.gitignore文件。 如果尚未安装wget,请通过自制软件安装。 现在,您的.gitignore文件已配置并准备提交。

在iOS应用中管理环境

对于开发团队来说,每个项目都有多个环境是很常见的事情。 开发人员使用服务器的开发版本。 质量检查先检查开发版本,然后再检查暂存版本,简称为候选发布版本。 然后,所有这些都最终发布。 对于iOS应用程序,您可以在为每种环境创建单独的应用程序以及自定义一个应用程序以提供环境切换选项之间进行选择。 这两种方法都有优点和缺点。 每个环境“ + ”的单独应用: 您可以完全控制每个环境设置 您可以同时安装3–4-N个应用程序,只需在一个应用程序之间切换即可测试它们(无需重新登录或执行任何其他操作) 通过在构建时修改显示名称或图标,您可以轻松了解哪个应用程序实例适用于哪种环境 每个环境“ – ”的单独应用: 您将必须处理每个应用程序的配置文件和证书,并使其保持最新状态 如果您使用推送通知并且仍然不使用通用身份验证密钥,则最终将导致混乱的推送通知证书和沙箱/生产问题 构建版本将很难处理。 每个构建都是唯一的,您将无法检查确切构建在所需环境中的行为。 同时至少3个应用实例。 您添加了另一个环境(具有长期功能)–您将拥有另一个应用程序 Fabric / HockeyApp / TestFlight会很拥挤 现在,让我们看一下“一个应用程序-N环境”方法。 您可以通过在应用程序内部实现自己的模块(通过摇动手势/双击屏幕上的某个位置来调用/只需根据服务器上的策略显示一个按钮)来调用该模块。 或者,您可以简单地使用Settings.bundle和标准应用程序设置。 无论哪种方式,让我们总结一下优缺点。 一个适用于不同环境“ – ”的应用程序: 您将无法同时使用同一应用的多个实例来检查相同的行为 每次环境更改后,您都必须重新登录(即使执行此过程) 如果从开发者切换到产品,反之亦然,推送通知可能仍无法正常工作 Fabric临时版本无法再安装在发布/临时版本上,您必须删除该应用程序的现有实例,然后从Fabric Beta应用程序重新安装 您必须管理发行版本的环境首选项可用性,如果您使用testflight进行登台,这可能会很棘手(有人可能会错误地发布错误的版本) 一个适用于不同环境“ + ”的应用程序: 不用担心配置文件 Appstore Connect和Fabric / HockeyApp中的苗条和简单项目结构 轻松的环境管理(具有预定义的选项和/或URL的自定义选项) 您具有一个长期功能,该功能在开发过程中仍然存在于另一个分支上,仍然需要对其进行测试吗? 只需将新配置添加到您的设置中,然后进行重建即可开始 您可以检查您的开发版本如何与当前的生产API一起使用,或者您的暂存(候选版本)版本将如何管理仍在开发中的新API更改 简单的CI&CD脚本 自定义应用程序模块可以派上用场,但需要一些开发。 让我们关注一种更简单的方法-iOS设置中的应用程序首选项。 首先,您需要为项目创建并注册一个Settings.bundle文件。 […]

解决iOS GIT问题

Quienes manejamos GIT,在线阅读和阅读“ enfrentado”,即解决冲突。 Pensémoslo,nuestro proyecto no puede ejecutarse por ellos,veces resultandifícilesde entender,involucra coordinarse con el resto de los desarrolladores para saberquécambios deben conservarse ycaálesno…etc。 Es por ello,que enéste指导我gustaríahablar acerca de lo que儿子,iOS系统的可识别性和解决方案,以及ejemplo的翻译。 AJMSlideAnimator Supongamos estamos trabajando en el proyecto AJMSlideAnimator,un proyecto disponible en Github和los cuales存在2个desarrolladores:CTime95(中央存储库)和TheKairuz(中央存储库)。 故事板中的Ambos desarrolladores se encuentran上的子句AJMSlideAnimatorView和se encuentran ajustando constantemente。 Ajustes TheKairuz […]

创建GitHub Pull Request的简单指南

作为像Perfect这样的免费开源软件项目,最大的挑战是如何在保持质量和凝聚力的同时,使社区参与。 作为项目“核心”团队的成员,我们经常离代码很近,看不到极端情况,也没有考虑到我们尚未遇到的情况-在这里使用库的人会遇到问题,错误,或优化机会对于​​项目的成熟至关重要。 幸运的是,git(在我们的特定情况下为GitHub)使用称为“请求”的流程使社区贡献变得容易。 “我很乐意为此做一个请求请求,但我不知道该怎么做” 在我们关于开放社区Slack组的日常讨论中,当被告知有关文档或代码更改的需求时,有人多次评论“我很乐意为此提出请求,但我不知道该怎么做”。 。 好吧,如果您曾经说过或曾经想过并且犹豫要为FOSS项目做出贡献,请继续阅读! 什么是“拉取请求” “拉取请求”这个术语有点奇怪,除了可能有“补丁”的概念外,它与git社区以外的任何事物都不能很好地等同。 实际上,拉取请求(也称为PR)是您提交代码更改同时促进公开对话和审阅的一种方法。 PR的简单解释是: 您可以修改自己的git存储库副本 一旦感到满意, 就会触发一个请求,将您的更改合并到原始存储库中,并说明您的操作以及原因 然后,项目管理员会查看您的更改并接受更改 ,或者就更改进行讨论。 实际中的拉取请求 为了逐步演示您作为读者的身份如何进行PR,我将描述对Perfect Documentation资源库进行PR的过程。 Perfect项目的整个文档集都是开源的,我们会定期更新主站点上的HTML版本-从GitHub存储库的Markdown文件生成。 这意味着,如果发现拼写错误或可以做出的改进,那么您将有能力提供帮助! 因此,我今天注意到CouchDB驱动程序文档中提到的版本不正确:它引用的majorVersion为0,应为1。 回到源代码的GitHub回购页面https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/CouchDB.md,我可以看到它也已经过时了,因此需要更改。 第一步,“分叉”存储库。 哇,更多git术语:“ fork”是在特定时间点故意创建的版本库。 想象一下,如果您沿着森林步道走,突然之间的路径被分成两部分,这就是“叉子”。 一个路径可能会继续到达预期的目的地,而另一条路径可能会将您带向完全不同的方向……有时会合并回到原始路径中。 “叉子”是在特定时间点故意创建的版本库的新版本。 要创建Perfect文档存储库的分支,请使用GitHub页面右上方的“ Fork”按钮。 然后,您会看到一个对话框,询问您要将新叉子放置在何处。 选择一个位置:您的列表可能比我的列表更短或更长时间…… 现在我们有了自己的fork,可以编辑文件了。 编辑并提交更改 对于我们将要进行的小更改,GitHub用户界面使操作变得简单。 对于更广泛的更改(尤其是涉及代码),建议将新的存储库克隆到本地环境,并在提交之前使用Xcode之类的IDE来编辑和测试代码。 看到此演示正在更改文档的一小部分,我将直接在GitHub UI中进行编辑。 在页面上以自己的仓库查看文件时,您会看到一个铅笔图标,用于进入编辑模式: 单击此按钮将使您进入编辑模式。 滚动到要更改的位置-在我的情况下,我想将“ 0”更新为“ 1”。 完成更改后,向下滚动至页面的“提交消息”部分,然后输入有关更改内容的简短说明: 现在,此更改仍在您的文档存储库副本(分叉)上,因此下一步是将路径重新组合在一起。 提交您的拉取请求 当查看分叉存储库的“根”(也显示自述文件的根)时,您将看到一个标有“新请求请求”的按钮。 单击此按钮将带您进入一个页面,该页面专门向您显示您的版本与父版本之间的所有差异。 它还会通知您是否存在任何妨碍成功的合并冲突。 单击绿色的大按钮“创建请求”,然后您可以借此机会总结在PR中所做的所有更改。 现在单击“创建请求请求”将在父资源库中向您显示可公开查看的PR条目。 请注意,有一个橙色的“ CLA助手”注释,以及一条消息“某些检查尚未完成”…… 该“ […]