Tag: cocoapods

如何在Swift Cocoa Touch框架中添加Objective-C文件

这篇文章是了解如何在Swift Cocoa Touch Framework项目中的Objective-C中添加第三个 库或文件的提示。 三个简单的步骤,让我们开始吧! 步骤1 首先要做的是在项目内部添加 Objective-C文件 (可以拖放) 。 第2步 将文件放入项目后,必须进入“ 项目目标” ->“ 构建阶段” ->“ 标题” 。 在“ 项目”选项卡中将看到所有“ .h”文件。 您必须将所有文件拖放到“ 公共”选项卡。 见下面: 现在,所有“ .h”文件都是您项目中的公共文件。 使它们可用是另一件事。 第三步 最后要做的是将它们导入 Bridge文件(由Xcode自动创建)。 桥通常是扩展名为“ .h”的项目的名称 。 注意 :如果项目名为 MyProject ,则Bridge文件的名称将为MyProject.h 。 打开Bridge文件,然后在导入中添加项目中的所有Objective-C标头。 #import #import “SomeImportedFile.h” 做完了! 现在所有项目都可以在Swift文件中使用那些Objective-C文件了。 谢谢!

利用开发包

许多CocoaPods Pod开箱即用,可以满足您的应用程序需求。 但是有时,您必须修改它们以执行某些特殊操作。 CocoaPods使过程更加轻松。 因此,将您的项目成像到SwiftyDropbox 。 这意味着,您的Podfile有类似以下Podfile : 平台:ios,“ 9.0” 项目’MyApp.xcodeproj’ use_frameworks! 目标“申请” use_frameworks! #Dropbox pod’SwiftyDropbox’,’〜> 4.1.0′ 结束 在某个时候,您决定修改SwiftyDropbox某些文件。 您可以导航到Pods Xcode项目下的文件,但是当您尝试编辑它时,Xcode会询问您有关解锁的信息。 即使使用Unlock进行响应,下一次$ pod update时, 所做的编辑也会丢失。 您要做的是将吊舱安装为开发吊舱。 首先,派生原始存储库并将其克隆到本地文件系统很有用。 我建议重命名目录,将派生名称为SwiftyDropbox-yourusername突显事实,这是您的派生而不是原始存储库。 同样,您计划进行的更改值得保留与当前HEAD分开的分支。 为了从磁盘上的git repo安装Pod,而不是将其托管在云上,必须将Podfile记录修改为: pod’SwiftyDropbox’, :git =>’/ Users / yourusername / path / to / repo / SwiftyDropbox- yourusername ‘, :branch =>’mybranch’ 可是等等! 这样,依存关系仍以锁定的文件状态安装,并且在下一次$ pod update删除更改。 要在Podfile指定Development Pod, […]

如何使用SwiftHashTags在Swift中轻松创建可滚动HashTag

SwiftHashTags 步骤01:创建您的Xcode项目 步骤02:使用Terminal导航到您的项目文件夹并初始化pod pod init 步骤03:安装吊舱 pod install 步骤04:关闭Xcode,然后打开“ .xcworkspace” 。 步骤05:打开Podfile并添加 pod ‘SwiftHashTags’, ‘~>0.1.2’如下 步骤06:然后使用终端浏览到您的项目文件夹并点击 pod install 步骤07:将SwiftHashTags导入到ViewController 步骤08:然后在您的ViewController文件中,在ViewDidLoad内执行以下操作。 您可以添加任意数量的标签,它将为您处理滚动功能。 步骤09:您一切顺利。 保存并运行。 您可以根据需要更改视图大小。 最后一步:实现SwiftHashTags Delegate方法,如下所示: 有关更多详细信息:SwiftHashTags 希望这对您有帮助。 好好享受。 欢呼!

如何使用Cocoapods安装Alamofire

你好 最近,我使用Cocoapods安装了Alamofire,以构建天气预报应用程序。 Alamofire是用Swift编写的HTTP网络库。 使用Alamofire,您可以做很多事情,例如从Web服务器下载数据。 访问https://github.com/Alamofire/Alamofire了解有关Alamofire的更多信息。 本文仅出于我自己的注释目的,因此我不会忘记安装过程。 什么是Cocoapods? Cocoapods是iOS项目中非常流行的依赖项管理器,它允许您以逻辑方式管理所有库。 访问https://cocoapods.org/了解更多信息。 将Cocoapods安装到项目中 打开您的终端并在下面写一行代码,然后将要求您输入密码。 须藤宝石安装cocoapods 安装完成后,您需要通过终端进入您的项目目录(使用cd命令),并在下面编写一行代码。 注意 :如果此时打开X代码,安装将无法正常进行。 按⌘+ Q退出X代码。 荚初始化 然后转到您的项目目录,您将找到一个名为“ Podfile ”的文件。 使用文本编辑器编辑“ Podfile” 当使用文本编辑器打开“ Podfile”时,文件的内容如下所示。 #取消注释下一行以定义项目的全局平台 #platform:ios,’9.0′ 目标’yourProjectName’做 #如果您不使用Swift并且不想使用动态框架,请注释下一行 use_frameworks! #yourProjectName的广告连播 目标’yourProjectNameTests’做 继承! :search_paths #测试豆荚 结束 目标’yourProjectNameTests’做 继承! :search_paths #测试豆荚 结束 结束 现在,您必须在源代码下方添加几行粗体代码。 (访问https://github.com/Alamofire/Alamofire#features以获取最新代码) 使用文本编辑器打开“ Podfile”时,文件内容如下所示。 #取消注释下一行以定义项目的全局平台 #platform:ios,’9.0′ 平台:ios,“ 10.0” 来源’https://github.com/CocoaPods/Specs.git’ 目标’yourProjectName’做 #如果您不使用Swift并且不想使用动态框架,请注释下一行 use_frameworks! pod’Alamofire’,’〜> […]

通过Cocoapods分发编译的Swift框架

这是 通过Cocoapods分发Swift框架 的后续文章 。 在我以前的文章中,我们学习了如何使用Cocoapods分发Swift框架。 简而言之,我们通过告诉Cocoapods将哪些源代码包装到框架中来实现这一目标。 然后,Cocoapods包装了源代码并将其与集成商项目链接。 我们发现此解决方案有两个潜在问题。 源代码泄漏给了集成商。 允许他们查看和修改我们的代码。 在集成商应用程序的每次干净构建上,框架都将随之编译。 与框架无关的更改要求重新编译框架。 那么有办法解决这两个问题吗? 🤔是的! 解决方案是编译框架,然后分发它。 但这说起来容易做起来难。 在这篇文章中,我们将介绍 什么是编译框架。 为什么要分发已编译的框架。 分发编译框架 我们不会介绍如何创建Swift框架。 如果您想回顾一下如何创建Swift框架,请查看我的文章《使用Swift框架重用代码》。 我们不会深入研究Cocoapods是什么以及它如何工作。 确保已安装Cocoapods。 您还可以查看我以前的文章《通过Cocoapods分发Swift框架》,以了解有关Cocoapods的更多信息。 同样,我们不会在这篇文章中介绍git。 我在这里假设您已经熟悉它。 本指南使用Xcode 10.1和Swift 4.2。 什么是编译框架? Swift源代码是iOS开发人员可以理解和编写的形式的代码。 它是人类可读的形式。 但是iOS无法理解Swift。 它了解二进制。 那么iOS如何运行我们的Swift代码? 我们将Swift代码转换为二进制代码。 翻译过程称为编译,而最终的翻译形式称为编译代码或二进制。 然后,iOS可以执行代码的二进制形式。 为什么要分发编译后的代码? 在我以前的文章中,我们通过Cocoapods分发了框架的源代码。 然后,Cocoapods将源代码包装到集成商端的框架中。 每次集成商清理构建其应用程序时,都会随之构建框架。 即使他们没有更改框架源代码,也是如此。 编译代码需要时间。 此外,集成商还可以访问我们的源代码。 他们能够查看和修改我们的代码。 通过分发编译后的代码,我们: 保密我们的代码 在应用编译过程中节省时间 分发编译框架 在本节中,我们将介绍编译iOS框架,然后通过Cocoapods分发它的步骤。 大纲: 通过Xcode编译Swift框架 通过Cocoapods分发编译的框架 […]

制作自己的CocoaPods-第2部分

第一部分演示了Cocoapods及其安装以及私有规范回购的创建。 不要错过创建私人椰壳足纲的第一部分。 实际上,这个系列的故事始于私人可可足类动物的意图,但是在写作的过程中,它使我与公共可可足类动物一并完成,使其焕发青春。 在这个故事中,您将逐步演示cocoapod的创建及其分布(无论是公开的还是公开的)。 制作自己的CocoaPod 步骤1 此步骤适用于直接的第2部分查看者,因为第1部分查看者在创建私有规范存储库时已经经历过。 登录到任何支持.git项目的源代码管理管理工具(即Github,Gitlab或Bitbucket)。 第2步 使用任何选项(私有或公共)创建一个新的存储库,并命名您的cocoapod存储库。 保留其余字段(描述除外),因为这些字段将在下一步添加。 对于该演示,我创建了一个名为my_own_cocoapod的存储库 私有和公共的创建过程都是相同的,但是分发过程会有所不同。 因此,请您明智地选择选项。 第三步 使用以下命令打开用于创建自己的cocoapod的终端。 $ cd [DIRECTORY_PATH] $ pod lib create [COCOAPOD_NAME] 在终端中,转到您自己的目录以创建自己的cocoapod。 对于演示, cd Desktop/MY_OWN_COCOAPODS/ Cocoapods具有很好的实用程序,可以使用示例项目以及可选的测试框架来创建自己的cocoapod。 该命令将通过交互式脚本提示,如下所示 平台? -> [iOS / macOS] 语言? -> [Swift / ObjC] 包括演示应用程序? -> [是/否] 建议测试框架? -> [快速/无] 基于视图的测试? -> [是/否] 它将在示例项目上运行pod install ,而您的选项由交互式脚本给出,并使用Xcode打开示例项目的.xcworkspace 。 对于演示, $ […]

iOSアプリの启动速度を2倍にするために,复数のDynamic FrameworkをStaticひ,ひとつのDynamic Frameworkを作るwith Swift

iOSカiOSエンジニアのmuukii(Twitter)です🥃 私人が开発を担当しているPairs Global(Pairsの海外向がアプリ)はアプリの起动がとても遅いのです。 一体なぜなのか。 OSはアプリを启动してAppDelegate(厳密にはmain关数)が呼び出されるまでには様々な处理を行います。 起动の部分の处理を最适化することでアプリが起动していない状态からの起动の高速化が期待できます。 アプリ起动高速化のための初始き(长め) には,用语について,厳密にはFrameworkとLibaryは异なるものですが,性质は近いので本记事では次のように用语を用います。 静态框架または静态库をめてとめて「静态框架」と呼びます Dynamic Frameworkまたは动态库をまとめて“ Dynamic Framework”と呼びます。 OSはアプリを启动してAppDelegate(厳密にはmain关数)が呼び出されるまでには様々な处理を行います。 起动の部分の处理を最适化することでアプリが起动していない状态からの起动の高速化が期待できます。 起动までにどのような处理が行われているのかはWWDCの资料で知ることができます。 启动时间(应用启动时间)の最适化 优化应用启动时间– WWDC 2016 –视频– Apple Developer 启动应用程序是一个复杂而微妙的过程,并且会影响不同应用程序设计的启动时间。… developer.apple.com 今回取り组みたいことは起动时间に含まれる动态框架の动的リンク时间の削减です。 WWDCの资料ではdylibは使用は高価であり少ないほど良いと示しています。 あまり具体的な话はここでは触れませんが,つまりは模块を动态框架ではなく静态框架としてビルしてビ使用することで起动时间の最适化が可能ということです。 しかし,Swiftの登场以降模块を使用する上では动态框架の使用を避けることは难しいことでした。 XcodeがSwiftを含むコードベースを静态框架としてビルドすることに対応していなかったからです。 codeの问题はXcode10では解消されており,静态框架または静态库としてビルドすることが可能になっています。 迦太基のドキュメントでも起动时间の高速化について検讨て検アイデアが掲载されています。 迦太基/迦太基 Cocoa的简单,分散式依赖管理器– Carthage / Carthage github.com では,动态框架を利用するメリットは何かと言うと, 実行可能なTargetが复数ある场合において,ソースコードを共有するケースです。 具体的にはアプリ本体とApp Extensionなどが挙げられます。 ざっくりとした说明にしておきますが,次のような构成だとします。 应用程序(可执行)1MB 扩展名(可执行)1MB これらに共通のコードを使用したい场合,共通のコードを一绪にコンパイルしても良いですが,Moduleとして包むことでInternalのメソッド呼ド出しを防ぐなどの疎结合性を保つことが可能になります。 なので,MyCoreというModuleを用意します。 MyCore 1MB MyCoreが静态框架だと中身(シン宝ボ)が可执行目标と合体するので,各サイズが次のようになります。 应用程序(可执行)+ MyCore(静态框架)= 2MB 扩展(可执行)+ MyCore(静态框架)= […]

开发自定义Pod并将其发布到Cocoapods库

本文将引导您完成创建自定义pod的过程,该pod将扩展方法添加到UIImage视图并将其发布到Cocoapods库。 让我们从创建一个简单的GitHub存储库和一个本地pod库项目开始,然后继续填写pod规范和实际代码。 在继续前进之前,您应该了解什么 CocoaPods基础 Github基础 熟悉Xcode 9 适应Swift-4 让我们开始吧 我希望所有人都将CocoaPods用作iOS项目的依赖项管理器,但是如果您没有设置所有内容,请按照以下步骤操作。 继续并启动终端应用程序,并输入cd并按Enter键,以确保您位于路径目录中 通过运行gem install安装CocoaPods。 安装完成后,请检查Pod版本 须藤宝石安装cocoapods sudo pod –version 现在,我们已经在机器上安装了Cocoapods,让我们转到GitHub并创建我们的Pod回购。 如果您尚未设置帐户,请填写注册信息并执行快速注册过程。 现在,如果您已经拥有Github帐户,请继续登录。 现在,我们选择右上角的加号图标,然后单击新的存储库。 您计划发布的所有cocoapod必须具有唯一的名称。 我将我的存储库命名为SKImageExtension,然后点击创建存储库并完成此操作。 我们需要在桌面上创建实际的Pod库项目,这对我们来说是幸运的,CocoaPods具有实用程序命令来帮助我们生成完整的模板。 让我们再次打开终端,我希望将项目保存在桌面上,因此我将目录更改为桌面。 现在,让我们运行create命令: pod lib创建SKImageExtension pod lib create将通过项目文件夹的名称生成项目。 现在,这应该与GitHub存储库匹配,因此在我的情况下,它将为SKImageExtension 现在,这将开始提示我们需要填写以下详细信息平台,开发语言,示例应用程序,测试框架,基于视图的测试选择以下所示的选项 当create命令完成安装后,您将看到我们的pod已安装完毕。 我们还将看到Xcode自动打开。 工作区项目文件。 现在,由于我们正在使用Xcode 9,因此我们将立即收到项目设置警告 。 因此,继续并在导航器中单击它,然后转到“ 更新为推荐的设置” 。 在这里,我将所有内容保留为默认值,然后单击Perform Changes 。 现在,我们在这里要做的最后一件事是将新的pod库推送到我们之前创建的GitHub存储库中。 为此,GitHub在回购页面上给了我们一些简单的说明 因此,让我们回到终端并通过Command + K再次清除日志,我们需要导航到pods库的根文件夹。 ->桌面:cd SKImageExtension -> SKImageExtension:git初始化 […]

通过Cocoapods分发Swift框架

出色的软件也具有出色的安装经验。 如果该软件太难安装,将很少使用它。 在我以前的文章中,我们学习了如何使用Swift框架重用和共享代码。 我们创建了一个包含框架目标的项目,该目标包含一个登录屏幕。 然后,我们在Xcode工作区中添加了框架和应用程序项目。 最后,我们通过工作空间将框架链接到应用程序并使用了该框架。 我们有责任获取并链接框架项目。 我们甚至没有办法管理框架的不同版本。 因此框架的安装和管理经验不是很好。 有没有更简单的方法来管理和安装框架? 🤔 就在这里! 🎉Cocoapods是一种流行的工具,可简化Swift框架的安装和共享。 在本文中,我们将逐步介绍通过Cocoapods共享Swift框架的过程。 稍后,我们将在应用程序中使用它。 我们将在Cocoapods将访问的git存储库中托管我们的框架。 在本文中,我假设您熟悉git 。 创建框架也不在本文讨论范围之内。 要查看如何创建框架,请查看我以前的文章。 将提供一个框架项目。 最后,我们只会谈论Cocoapods对于Swift框架可以做什么。 在开始之前,让我们快速了解Cocoapods的工作方式。 它将帮助我们与之合作。 本指南使用Xcode 10.1和Swift 4.2。 Cocoapods如何运作? 在本节中,我们将从两个不同角度简单地概述可可豆的工作方式。 将框架安装到iOS应用程序项目 向Cocoapods发布框架。 如果您已经熟悉Cocoapods的工作原理,请随时跳过任何或所有部分。 1.将框架安装到iOS应用程序项目 让我们开始看当Cocoapods如何工作的简化概述,当我们要求该工具将名为FrameworkA的Swift框架安装到名为MyApp的 iOS应用程序项目中时。 我们告诉Cocoapods,我们要在项目目录根目录下名为Podfile的文件中的MyApp target中安装FrameworkA 。 按照我们的示例, Podfile看起来应类似于以下内容: 以“ MyApp”为目标 吊舱“ FrameworkA” 结束 在上面的示例中,我们告诉Cocoapods我们的项目有一个名为MyApp的目标。 我们还告诉Cocoapods, MyApp目标需要一个名为FrameworkA的框架 ,该框架通过Cocoapods共享。 Cocoapods中的共享框架称为pod 。 捕获项目目标及其要求之后,我们必须告诉Cocoapods根据项目规范来建立我们的项目。 为此,我们必须运行pod install 。 […]

通过CocoaPods分发框架的10个技巧

在我相对较短的iOS开发生涯中,我与CocoaPods建立了爱恨交加的关系。 当它起作用时,它很棒,但是使它按您需要或期望的方式工作通常具有挑战性。 但是,在我最近的项目中,我对它有一个健康的尊重,我希望这些技巧可以帮助您充分利用真正的,社区开发的依赖项管理器,尽管有一些小缺点。 以下技巧是我主要是通过反复试验获得的小智慧。 CocoaPods文档简洁明了且有用,但是对于初学者来说有时不够详尽,在某些情况下,有用的功能和选项是非常隐蔽的。 毋庸置疑,所有观点都是我的观点,尽管我相信所写内容都是准确的,但我对此不做任何保证。 在这种情况下,我请您参考标准的开发者免责声明: “它可以在我的机器上工作!” 在Flickr上浏览Mike Rohde的照片。 Mike Rohde已将5118张照片上传到Flickr。 www.flickr.com 当我刚开始使用CocoaPods时,在发布之前测试我的Podspec更改似乎是一门黑手艺。 有关如何执行此操作的指令很多,但是对于初学者来说,没有一个指令特别简单。 大多数说明都谈论如何设置自己的本地规范存储库,并将Podspec推送到其中,然后在Podfile中更改source参数以指向本地本地存储库。 我发现此工作流程缓慢且麻烦,但是当时,我不知道有更好的方法,直到我发现了一个非常简单的窍门:在本地更改Podfile,然后在测试目标中,指定依赖项时,只需在行尾添加, :path => ‘/path/to/your/spec.podspec’ to , :path => ‘/path/to/your/spec.podspec’ 。 这将告诉CocoaPods在您指定的位置而不是远程规格存储库中查找Podspec。 #示例Podfile #platform:ios,’9.0’target’MyApp’做 #如果不想使用动态框架,请注释下一行 use_frameworks!#MyApp的广告连播 #:path应该表示相对于包含Podfile的目录的路径,该目录包含Podspecpod“ MyPod / Core”,:path =>’../../mypodspec.podspec’ 结束 通常,Podspec会指向GitHub上的特定发行版标签,该标签将告诉CocoaPods查找该特定发行版,下载代码并进行构建。 但是,如果您还没有准备发布库,并且没有在远程仓库上创建发布标签,该怎么办? 不要惊慌:这是一个妥善保管的秘密,但是CocoaPods也可以直接从特定分支提取代码,从而无需在GitHub上发布标记版本。 在构建时确实会收到警告,说明您尚未指定发布标签,但除此之外,它的工作还不错,并且CocoaPods从指定的分支中提取了最新的提交。 在文档中确实对此做了简短的提及,但是没有给出显示确切语法的示例。 在您的Podspec中,通常会指定 s.source = {:git =>“ https://github.com/your-company/your-repo.git”,:tag =>“#{s.version}”} …您可以改用 s.source = {:git =>“ https://github.com/your-company/your-repo.git”,:branch […]