Tag: xcode

Xcode —简介

佩克纳尔坎(Perkenalkan),纳玛·赛亚(Namasaya)Arroyando Pristison Romanov iOS开发者dalam membangun aplikasi untuk iOS开发者计划。 苹果,苹果,苹果,苹果,苹果,苹果,苹果,苹果,苹果,苹果,苹果,苹果等产品。 X-code上的Bahasa yg digunakan di,Yaitu Objective-C dan Swift。 Pada kesempatan kali ini saya akan sedikit menjelaskan cara instalasi beserta sedikit fungsi dari beberapa bagian di Xcode Setelah memilih和“创建一个新的Xcode项目”,以及其他人。 Xcode memberikan banyak pilihan jenis projek tergantung dari kebutuhan anda。 Pada Xcode v9.2和juga dapat membuat projek yg berhubungan dengan […]

从Unity到Swift集成

2.选择Unity作为您的项目配置文件。 3.如下所示匹配Unity.xcconfig文件。 SWIFT_OBJC_BRIDGING_HEADER = $(PRODUCT_NAME)/Unity/swiftunity-Bridging-Header.h; SWIFT_PRECOMPILE_BRIDGING_HEADER = YES; 4.将运行脚本添加到XCode构建目标。 回显“正在同步$ UNITY_IOS_EXPORT_PATH中的代码…” rsync -rc –exclude-from =“ $ PRODUCT_NAME” / Unity / rsync_exclude –delete $ UNITY_IOS_EXPORT_PATH / Classes /“ $ PRODUCT_NAME” / Unity / Classes / rsync -rc –exclude-from =“ $ PRODUCT_NAME” / Unity / rsync_exclude-删除$ UNITY_IOS_EXPORT_PATH / Libraries /“ $ PRODUCT_NAME” / Unity / Libraries / […]

如何在IOS中正确使用水平滚动视图– Khoa Nguyen –中

如何在IOS中正确使用水平滚动视图 版本:Xcode 8 这是我们要在IOS中使用水平滚动视图构建的内容 然后编辑为所需的大小,这里我改为1000 2.将UIScrollView放入主视图 然后将Scrollview固定到主视图的边缘 3.在Scrollview中添加一个新的UIView。 这个新的UIView将成为Scrollview的内容子视图。 这很重要:让新的UIView的高度约束等于在步骤1中设置的mainview的高度(在我的示例中为1000)。当然,可以将高度设置为小于1000(在我的示例中)。 但这是不适当的,因为如果您将某些内容放在800高度以外的地方,它们将会丢失 4.再迈一步。 您按住Command键选择主视图和新的UIView。 然后在别针菜单中,给他们相等的宽度 这就是在IOS中设置水平滚动视图所需要做的全部工作。 您可以对其进行一些控制,然后测试一下您所拥有的! 祝您好运,在下一个教程中见!

在iOS应用中使用不同的Firebase环境

近年来, Firebase变得非常流行。 您可能知道,Firebase是一个后端即服务 ,这意味着它以最小的配置在后端提供了多个服务以使其正常运行。 它现在属于 Google ,它于2014年购买了它,因此它正在迅速发展和发展,其文档以及技术支持都非常出色。 Firebase提供了各种各样的产品 :分析,实时无SQL数据库,音频,照片和视频存储,推送通知,功能(无服务器代码),动态链接……您可以在官方文档中查看整个列表。 不同的环境 如果您正在阅读本文,则可能已决定对iOS应用程序使用某些Firebase服务。 应用程序开发中的常见场景是拥有不同的环境 ,例如调试 ,质量保证, 测试版 , 生产 … 当您的应用处于开发模式时,或在质量保证部门进行测试时,某些“ 数据污染 ”可能会到达Firebase服务器。 我将对此进行简要说明。 假设您的应用程序将使用Firebase Analytics和Firebase Realtime Database 。 质量检查部门的测试人员已收到您的二进制文件,并将尝试使用它。 他们将在应用程序中导航,点击按钮,在数据库中插入数据……您正在向Firebase发送“ 虚假信息 ”,并且您不想将这些污染数据与真实用户信息混合在一起。 换句话说,您可能会将测试人员的事件 (您仅希望用于测试目的)与最终用户的信息(您希望为应用程序的正确行为所混合)混合在一起 。 该解决方案包括在您的应用程序中具有不同的环境 ,以使每个应用程序中的信息隔离,并且不会与其他应用程序混合。 在xcode中设置Firebase环境 我们将从头开始了解如何为不同的Firebase环境配置xcode。 我没有看到太多有关此主题的文档,所以我决定解释如何做。 首先创建一个新的xcode项目并设置两个环境: debug和release 。 如果您需要帮助,可以参考本文。 如果您懒于创建和配置项目,也可以从此处下载入门项目。 您必须完成以下步骤: 在Firebase控制台中,创建两个单独的项目(不是应用程序):一个用于调试环境,另一个用于发行版 。 适当地命名它们,以免混淆它们。 2.为每个项目创建一个iOS应用。 请小心输入您在xcode中分配给每个项目的包ID 。 3.下载Firebase为每个项目生成的GoogleService-Info.plist 。 现在,将它们保存在硬盘驱动器上的其他位置。 与其重命名debug-plist文件,不如将文件名保留为默认值。 […]

Storyboardable协议:更快地初始化基于Storyboard的视图控制器

我最近决定开始在Instagram上发布我的Swift编程语言经验。 该平台似乎只限于异国风情的度假照片和猫照片,但我相信它也可以用于承载惊人的视觉代码和构建应用程序的过程。 这里的挑战实际上是将好的代码和想法与呈现它们的美学方法结合在一起。 我的第一篇文章与情节提要有关,这是Xcode的可视化界面,用于构建具有漂亮的拖放功能的应用程序UI。 如果你问我的话,相当合适。 事不宜迟,请查看嵌入的帖子,如果喜欢的话可以给它一些爱,并在末尾查看完整的代码! 原始Storyboardable Instagram帖子 分镜脚本代码

XcodeのRun Scriptフェーズを无效にしてビルド时间を短缩する(スクリプト付き)

私が担当しているiOSアプリをXcodeでビルドすると,CarthageやCocoaPodsであわせて50が必要なくても49秒かかっていました。 RunのRun Scriptフェーズを実行しないようにして,ビルド时间が35秒短缩されました。 RunのRun Scriptフェーズは一度実行すればDerivedDataを削除したりフレームワークを追加・削除したりしない限り実行する必要はありません。ですのでそのフェーズを実行しないように设定することでビルド时间を短缩すること(CocoaPods1.2.0では代码签名をパラレルに実行できるようになるようなので,效果は小さくなると思いますが) 具体的には运行脚本フェーズの只有安装设定をオンにするとArchiveのときのみ実行されるようになります时才运行脚本。しかし常にオンにしておくとCIでの実行などで问题が発生します。また,手动でオン・オフを切り替えるのは面倒です。ですので切り替えるためのスクリプトを作成しました。 xcodeprojというGemが必要です。CocoaPodsをインストールしてある场合は既に入っています。 使い方はこのスクリプトに実行権限を与えて以下のように実行します。 change_run_only_installing.rb –only –project = MyProject.xcodeproj –target = MyTarget –phases =’迦太基复制框架’,'[CP]嵌入式容器框架’,'[CP]复制容器资源’ MyProject.xcodeproj,MyTarget,“迦太基复制框架”,“ [CP]嵌入荚框架”,“ [CP]复制荚资源”は自分の环境に合わせて変更してください。 – 只要 がオ指定すると仅在安装がオンになり,时运行脚本 -仅 を指定するとオフになります。 frのコマンドのエイリアスを作成したりAlfredから简単に実行するようにすると良いと思います。 をとgitフックを利用することでオフにすることが出来るかもしれませんが,それは试してません。 のスクリプトに问题を発见したら変更リクエストをお愿いします。

如何将字体导入Xcode(Swift 3)

因此,您正在构建自己的第一个应用程序……让我们用一些很酷的字体来增强UI效果! 这是6个步骤的操作方法。 第1步: 找到一个漂亮的字体并下载。 我使用DaFont作为我的个人徽标,并为该项目/博客文章找到了另一个漂亮的字体Ember。 我之所以选择Ember,是因为它在公共领域,但是您可以轻松地选择一种不错的字体,然后向其设计师发送一份体贴的捐款。 (我也非常喜欢Boquerón,但也许我会将其保存到另一个应用程序项目中)。 确保字体为TFF(TrueType格式)或OTF(OpenType格式)。 第2步:保存字体并将其拖到Xcode项目中。 将字体文件夹拖到项目中时,请确保“根据需要复制项目”。 第3步:单击您的字体文件夹,以确保它们包含在“目标成员身份”中。 步骤4:快速检查一下,您的字体在“构建阶段”->“捆绑资源”中吗? 步骤5:在plist中手动输入字体名称。 第6步:使用字体! 使用情节提要 ,在下拉菜单中找到字体。 以编程方式,在标签或文本项上选择font属性。 在下面,我将按钮的字体更改为“ Ember”字体。 给我留言,让我知道您决定将哪些酷字体导入应用程序! 资源: DaFont.com 1001字体 字体松鼠

CS 193P:使用Swift讲座1注释开发iOS应用程序

介绍 为了成为iOS的高级开发者,斯坦福大学的CS193p: 在Swift中开发iOS(9)应用程序是一门课程,它受到许多人的拥护,这与他们在iOS开发中的成功紧密相关。 需要注意的是,对于初学者来说,它不一定是最好的课程。 我刚刚在Recurse中心(Hacker学校)完成了一批工作,并且受到启发去解决远远超出我舒适范围的问题。 参加这门课程就是这样的壮举。 这些是我用来帮助我进一步了解材料并防止我不得不暂停并无限期播放视频的笔记。 许多幻灯片是通过iTunes U课程提供的。 笔记是给我的,实际上是对演讲内容的要求,但是我被鼓励分享这些笔记,因为事实证明它们对许多参加该课程的人也很有用。 我什至没有满足先决条件的一半,因此我怀疑我的笔记会很冗长,并且可能更适合像我这样的相对较新的程序员。 请在下面发布任何改进建议。 谢谢! 先决条件 iOS概述 演示版 你会学到什么? –您将学习如何构建“酷”的应用程序 –现实生活中的面向对象编程 先决条件 :主要先决条件是具有面向对象编程 (OOP)的经验。 满足要求的相关斯坦福课程为CS106A&B , CS107 , CS108或CS110 。这是斯坦福大学的高级CS课程。 核心操作系统在硬件附近,而可可触摸在用户附近。 iPhone正在运行UNIX ,因此它具有完整的多任务处理和文件系统。 构建应用程序时,您可以使用所有这些功能。 特定于移动设备的是Power Management和Keychain Access之类的东西(以确保人们不会访问不应访问的东西)。 UNIX上的面向对象层是 核心服务层,因此我们可以使用Networking , Multithreading或Preferences和SQL数据库。 此层中没有用户界面 (UI)。 具有讽刺意味的是,这个(多媒体)层非常重要,我们不会花太多时间。 该层包括视频,各种不同的音频框架,静态图片(如JPEG),用于2D绘图的Quartz API,用于3D绘图的OpenGL等。 在顶层,我们将花费大部分时间在此处,这是Cocoa Touch 。 它是用于构建用户界面的面向对象的API。 这些用户界面不仅限于屏幕上的按钮和滑块。 例如,它们包括摇动手机时的操作以及使用手机的方向作为输入。 它还包括动画。 我们没有时间来遍历该层中的所有对象,但是我们的想法是,我们了解的一些对象将具有使用它们的范例,这些范例可以应用于我们不熟悉的对象。 我们所做的一切都将在Xcode 7中进行,我们将始终专注于Swift。 与框架同样重要的是一种称为Model-View-Controller(MVC)的设计策略或方法。 […]

WWDC17 —回顾展

我们的两名开发人员Tim和Niall参加了抽奖活动,并获得了今年WWDC,苹果全球开发人员大会的门票。 Michael是他们不幸的iOS同事之一,就他们的WWDC经验以及iOS 11和Xcode的新功能采访了他们。 另一个不太幸运的同事杰西卡(Jessica)也加入了。 Niall,这是您的第一个WWDC,那么为什么不从给我们您对WWDC的总体印象开始呢? Niall(ND):很容易陷入炒作之中,我认为它会逐渐消失,但是这个地方的能量和对它感到非常兴奋的人的种类使你继续前进。 我非常喜欢它,整个活动,演讲者和场地。 今年是在圣何塞,是您第一次来圣何塞吗? ND:是的,我感到有点遗憾,因为它不在旧金山,因为我认为这是一个比圣何塞更有趣的地方,但是无论如何,您实际上并没有在场地外获得大量的时间-差不多全开。 蒂姆,这也是您去年第二次参加WWDC,请问该如何比较? 蒂姆(TC):我更喜欢圣何塞的场地。 一切都在一个楼层上,虽然紧凑但很大。 迈克尔(MB):那没有道理…… ND:感觉就像所有的东西都紧靠在一起,您真的不需要走太远就可以到达某个地方,但是无论何时到达任何地方,都有大量的空间-大厅很大。 “……您觉得很久以前就应该在那里的东西终于来了。” 就开发人员工具而言,最大的收获是什么? ND:我认为对我来说最大的改变是Xcode 9的一些更改,特别是新的重构工具,以及引入的一些生活质量更改,您认为应该有很长的时间时间前终于来了。 运行多个模拟器,进行无线调试对于Apple TV的开发将特别方便,并且还有其他一些优势,例如大大改进了代码折叠功能。 TC: iPad的新iOS 11功能给我留下了深刻的印象。 现在基本上在计算机上已经完整。 应用之间的拖放,改进了分屏显示。 MB:您认为这会让您想编写更多iPad应用程序吗? TC:是的,我真的很想尝试这种拖放式的东西,它在iPhone上的应用程序之间不起作用。 在第一个Beta中,我已经能够使其在测试应用程序中运行,但是他们在第二个Beta中禁用了它。 “我认为对于那些不住在命令行中的人来说,他们可能不需要太久的其他git工具,例如Tower或SourceTree。” 我和杰西卡都没参加会议,但是我们在家里一起玩,所以对您来说,杰西卡对您来说最大的好处是什么? 杰西卡(JC):我也非常喜欢重构方面的改进,这是我到目前为止一直在使用的主要内容。 显然Xcode更好,但是我在Android Studio中做了一些基本的事情,而这些东西在Xcode中是做不到的,对于Swift,您甚至不能做基本的重命名。 这是很简单的东西,但是却有很大的不同。 MB:到目前为止,我最喜欢的是Xcode 9中的新git功能。能够轻松浏览所有分支和标签,查看所有提交以及在完整的并排编辑器中查看差异是一个很大的事情。改善。 我认为对于不在命令行中的人们来说,他们可能不需要太久的其他git工具(如Tower或SourceTree)了。 TC:尽管如此,我认为它过于关注GitHub了-如果它更通用,那就更好了。 MB:是的,虽然我提到的东西可以在我们所有的git仓库中使用,但是我们在大多数项目中都没有使用Github,但是当然还有很多其他功能仅适用于GitHub,我想知道他们是否会为BitBucket添加类似的东西在未来的几年。 JC:所以您一直在使用Xcode中的git? MB:是的,实际上它是最棒的功能,我认为是后台获取,并突出显示远程文件更改的位置。 不必考虑这一点,只需在文件旁边看到一个小图标就可以了。 您认为Xcode或其他开发工具中还有什么值得一提的吗? ND:在大型项目中,Xcode 9的速度要快得多,搜索的速度要快得多。 TC:编辑器中的滚动确实得到了改善,滚动更大的文件的速度更快。 MB:还有一件事,我没有看到,但是您提到了Tim,我觉得听起来很棒,它是快照调试状态,您能告诉我们一些吗? TC:有时候您会发现一个错误,但是您不是一个要修复的错误,因此您可以暂停执行,拍摄快照并将其发送给另一位开发人员。 他们可以导入并运行它,然后从该状态继续。 不幸的是,这仅适用于SceneKit调试,但是仍然很酷。 我去过的每个WWDC,最大的欢呼之一就是他们一劳永逸地解决了我们所有的代码签名麻烦,而您提到他们今年再次做到了Niall? ND:是的,他们已经取消了从Xcode吊销发行证书的功能,因此希望这将减少意外吊销。 他们还更改了代码首选项中的“帐户”标签。 如果您在那里管理证书,它将为您提供各种证书的状态,并指出特定问题,例如证书是否在钥匙串中或是否已被吊销等。 MB:这次没有“修复问题”按钮了吗? […]

Swift的10个很棒的Swift功能-顽固的Swift反对者(第1部分)

在成为顽固的Swift支持者(和狂热的Objective-C防御者)之后,几个月前,我首先进入了我的第一个Swift专属项目。 该项目是一个相当新的项目,仅包含几千行代码,因此这是一次完美的机会,可以最终为Swift提供应有的诚实机会。 但是,为什么要解决没有破裂的问题呢? 这是一个合理的问题,无需妖魔化Objective-C的活力。 它为开发人员服务了三十多年。 那么,为什么最近又反派呢? 显然,像Objective-C这样的动态语言在这个世界上仍然应该占有一席之地。 另一方面,通过前述的动态性可以避免一整类错误,同时使以前认为不可能的编译器优化成为可能。 同样,活力/严格性辩论似乎是季节性的,有时会不时地交替进行。 我来了,我现在是坚定的专业型安全。 受函数编程的启发,Swift还强烈鼓励不变性,在我看来,不变性导致代码更易于编写和理解。 最后,由您决定Swift是否可以在您的应用程序开发工具箱中替换Objective-C。 但是有一点很清楚:苹果公司出于自身的原因已经停止改进Objective-C。 取而代之的是,仅应用改进来提供与Swift更好的互操作性(例如,最近,可空性和轻量级泛型)。 苹果公司未来的所有开发工作都将集中在Swift上。 跟随他们的领导并不是一个坏主意,如果您尚未开始,现在可能并不是一个糟糕的开始时间,因为苹果公司承诺在Swift 3后的时间框架内减少代码破坏。 如果您决定坚持使用Objective-C,则有10种Swift特权无法利用: 协议扩展的默认实现 通过后卫轻松提前归还 带有尾随闭包的更流畅的API 具有默认值的功能参数 使用基于订单的参数名称进行单行闭包声明 枚举轻松命名 扩展中的协议实现 在单个.swift文件中定义多个类/结构/协议/扩展名 自动生成结构中的初始化参数 内置对延迟实例变量的支持 我今天只有时间来参加前三场比赛,所以让我们开始吧。 1.协议扩展的默认实现 协议(其他语言的“接口”)“非常棒”。 它们是软件体系结构的组成部分之一,并且在每个软件项目中都有一席之地。 与扩展结合使用时,Swift的协议甚至更强大。 它们实际上是Rubyists所称的mixins:行为的一部分,可以将其添加到类中,而无需子类化。 以下示例取自我的用于Coordinator设计模式的开源工具包,称为CoordinatorKit。 考虑协调器和ComposableCoordinator协议: 它们只是简单地定义:任何协调器至少应具有start()方法,并且适合协调器层次结构的任何协调器应至少公开其子级数组。 此模型中的常见操作是按其类型查找子协调器,然后将其返回。 以下方法完成了该功能的重复执行: 为了避免在各处重新实现(或将其定义为公共功能),一种解决方法是创建一个抽象超类,该超类实现ComposableCoordinator并在此实现。 虽然可行,但有点代码味道,因为Swift没有正式的“抽象”类概念。 这种强制子类化也限制了用户,因为像大多数面向对象的编程语言一样,Swift只允许单继承。 Swift-way将在协议扩展中声明此重复功能: 任何符合ComposableCoordinator的类都将免费获得findChildCoordinator ()方法,而无需子类化。 因为这是面向协议的,所以您可以以不依赖约定的方式混合使用任意数量的功能,并且可以由语言和工具支持。 当然,只要SourceKit不会崩溃,Xcode就会在任何兼容的类上自动完成此方法签名(眨眼眨眼)。 2.轻松让守卫提前归还 在Swift中,对可选对象的处理非常重要,因为这是该语言保证安全的方式之一。 相比之下,Objective-C并未提供对nil值处理的任何保护措施,从而可能导致各种类型的与nil相关的崩溃。 尽管如此明确地说明了可选值可以提高安全性,但它会以无数个可选的if拆包if语句的形式增加程序员的开销。 值得庆幸的是,苹果公司通过引入复合if语句解决了if let嵌套问题,但是这个守卫let事情是什么呢? 通常,在执行方法之前,需要将多个可选值解开,以作为一种验证手段。 为防止多次重复if […]