Tag: 游乐场

继续执行nadar,继续执行nadar,nadar,nadar …

最终解决方案的制定和实施的目的是为了实现零编程。 意见与建议 您可以使用代码猴子的任何东西,但没有高质量的声音,不能修改声音,所以必须符合要求。 普遍存在的错误,可在pedia的任何地方使用…quer izer,aos colegas显示器执行BEPiD。 Essa semana fui salva por diversas pesssoas que me ajudaram a Concertar os erros e encontrar outrassoluçõespossíveispara meus problemas。 常见问题解答,请参见论坛。 提维莫斯(Tivemos que usar)超越了现实生活中的认知能力(conseguissem realizar o que eu precisava)。 Nisso eu descobri um站点chamado Stackoverflow que me ensinou muito。 您未在自己的网站上建立任何Google链接。 对PESQUISAR SEMPER EMINGLÊS的优先认购。 O segundo foi:PESQUISE SEMPRE。 Chegamos ao memoo de […]

UIDynamics在Playground的基础

总览 UIDynamics是由Apple创建的引擎,可根据定义的行为修改符合UIDynamicItem协议的类的实例的中心 , 变换和界限 。 UIView和UICollectionViewLayoutAttributes默认情况下符合UIDynamicItem协议。 在本文中,我们将重点介绍UIViews。 我可以在我的Github帐户中找到完整的Playground。 我完全建议下载并使用它,以查看每种行为的工作原理。 其中一个示例的示例: 搭建游乐场 在研究本文时,我发现Playground是实现和完善UIDynamic行为的非常有用的工具,因为它真的很容易设置并且非常快地从更改中获取反馈。 要创建一个具有以下视图的游乐场: UICollisionBehaviour 它模拟元素之间的物理碰撞。 有两种类型: 元素之间:添加多个项目。 反对障碍:通过添加边界或将参考视图用作边界。 但是自从iOS 9以来,Apple为此行为添加了新方法,从而提供了非常有趣的附加元素方法。 让我们看一下它们: 滑动附件:此附件在两个元素之间创建附件,第一个元素可以在与第二个元素相关的axisOfTranslation定义的假想轴中移动。 试图脱离该假想线将导致该轴的参考元素旋转。 限制附件:这就像将绳索绑在两个元素上一样,因此当锚点之间的距离大于length参数时,它将拖动第二个视图。 它不会影响变换或边界,这意味着元素不会旋转。 固定附件:行为就像将一根棍子绑在两个元素上一样,因此元素之间的相对位置不会改变。 销钉附件:模拟两个钉在一起的物体。 常见错误 这些是我在研究中发现的最常见错误,希望处于相同情况的人可以通过阅读以下内容节省时间: 尝试手动修改中心,边界或变换。 例如,添加手势以移动视图以更改其中心将不起作用。 它会与UIDynamics引擎发生冲突,并且不会应用物理行为。 为了解决这个问题,您可以将UIAttachmentBehavior与anchorPoint一起使用,作为用户点击的位置。 将UIDynamics + Auto Layout结合起来时,我并没有遇到大问题,当我删除附件行为并添加推入行为时,这只是一种疏远行为。 它没有从同一角度流畅地推动视图,而是重设了位置。 解决方案是在删除附件之一之前添加推送行为。 结论 UIDynamics是一个出色的工具,可以明智地使用它,可以为您的应用程序增加很多价值,或者只是从中获得乐趣。 与Playgrounds结合使用,可以非常轻松快捷地为新行为建模。 Apple的有关此主题的文档和文章并不十分深入,因此您必须猜测一些参数范围。 例如,其中一些甚至没有像UIAttachmentBehavior的FrictionTorque这样的正式单位。 为了结合一些基本行为来构建更复杂的行为,我决定写另一篇文章,解释如何构建受Swarm启发的模态行为。

作业3 —用于in / while /功能

Q1总结所有格子中的总数 Q2 Q3 Q4 Q5 Q6 Q7 Q8

Swift Playgrounds:最简单的方法

如果您曾经尝试过建造快速的游乐场,那么您会知道这项任务多么艰辛和令人讨厌。 您不知道出了什么问题,必须一直为您的ipad发送时间,或者等一千分钟直到icloud重新加载它。 如此艰难,以至于我和我的朋友们首先习惯于首先创建一个xcode项目并将所有内容放入其中。 所以,要感谢苹果的时间: 狗的日子结束了! 为什么? 看看:Swift Playgrounds作者 因此,如果您想快速使用这个出色的工具,只需保留此页面即可! 为什么? 作者模板的工作就像魔术一样:您可以构建,测试它,还可以使用运动场语言(实时视图等)调试运动场。 当它准备就绪时:它就可以建造了,您的游乐场将在iPad上完美完成,就像馅饼一样简单! 怎么样? 首先:在苹果网站上下载该项目:Swift Playgrounds Author Template 顺便说一句,我不是要教如何使用,而是要说我在使用时学到的技巧。 1)了解结构 它的结构看起来像xcode和游乐场书籍的结合。实际上就是这样! 老实说,我并没有仔细说出一切,但如果您想了解更多..可以免费在Google上搜索。 运行项目重要的是什么? a)清单-在清单中,您将在其中告知游乐场的基本信息,例如名称,页数等。 b)源代码-在源代码中,您将放置类,例如视图控制器,类…… c)私人资源-这里将包含支持文件,例如图像,情节提要,XIB,Sceneview,音频…… d)章节-如果您已经写了一本操场上的书,那么您会知道这里是文本,尽管该平台在很大程度上发挥了作用 e)章节-最后但仍然很重要的产品,您很快就会了解更多! 2)保重! 上面的图像是此运动场模型中的一个类。您一定不要忘记让重写或委托功能处于公共模式。 如果您这样做,那么构建器将抱怨并要求您将其更改为私有,但委托将无法工作。 另外,请注意,在开始时我添加了此objc行,以便让他们知道我的类在项目中的位置:另一个“您一定不能忘记”的地方! 3)在目标! 如果您从未与多个目标合作过,也许会有些困惑,但是喘口气,我知道您可以做到! 在这个项目中,您有三个不同的目标: a)游乐场书-这将是您工作的结果:游乐场书,但让我们将其保留下来以作为结局 b)书籍来源-顾名思义,这个目标是您的来源,有点令人困惑,但是当我们检查成员资格后,您会明白的 c)书本来源-有用的目标! 有了这个,我们就可以运行,调试并在游乐场中做我们想做的一切 现在您已经了解了每个项目的一点点,应该将正确的目标成员资格添加到项目的每个源中,如果您从未这样做过,那么只需选择存档并打开检查器即可: 那么每个归档文件属于哪个目标? a)来源->图书来源 b)私有资源:私有资源通常是视听内容,这意味着如果您希望将其保留在书中,然后选择PlaygroundBook成员资格,LiveView目标也会发生同样的情况,如果您不标记成员资格,则源不会可用..这就是为什么对我来说不合理的原因是不将所有内容都标记为成员身份,但这取决于您🤷‍♀️ (显然来源除外) 4)建筑和大决赛 现在,您编写了没有错误的代码,并且想要尝试看看行为是否正常。 测试就像在普通的xcode中一样:cmd + r 当然,您必须选择正确的目标:实时显示测试: 选择实时取景,然后等待其在iPad中运行! 大决赛 必须告诉真相:我写了这整件事,等待这一刻! 现在是时候让您的所有代码成为一本真正的游乐场书,并向您的小侄子展示您的惊人项目了。 但是,为什么要大结局呢? 因为它是如此简单,以至我以为是谎言。 […]

使用Xcode 10通过3个简单的步骤将cocoapods库添加到游乐场

打开Xcode并创建一个新的Cocoa Touch框架或Cocoa Touch静态库。 我们称之为: MyFrameworkProject 为此,您需要使用要在Playground中测试的库创建Podfile,例如在此处Alamofire: 来源’https://github.com/CocoaPods/Specs.git’ use_frameworks! 目标’MyFrameworkProject’做 pod’Alamofire’,’〜> 4.7′ 结束 然后运行: 吊舱安装 打开使用cocoapods创建的工作区并创建一个新的游乐场。 要白蚁,请在工作区中添加游乐场。 现在,您可以使用新创建的游乐场内的第三方库(此处为Alamofire)。 导入 UIKit 导入 Alamofire var str =“你好,操场” 您可以在这里找到代码:https://github.com/barrault01/cocoapods_insideplay_ground

抓住铁锹和桶,在Xcode中有一个更好的游乐场

测试代码和功能是构建任何应用程序的重要组成部分。 但是,不幸的是,在构建阶段进行测试有时可能很困难和/或耗时。 通常,我在编写代码时进行一些快速测试和故障排除的方法是在以下功能下实例化App Delegate文件中的对象。 然后,我将把打印语句放在类的函数或App Delegate中。 程序启动后,将执行此功能以创建每个对象的实例,然后查看控制台上打印的内容以评估是否实现了所需的功能。 但是,这很耗时,而且直言不讳,令人讨厌。 我要采取的另一种方法是将文件复制到操场上并在其中进行测试。 这很方便,因为它将在右侧显示进度和信息。 在功能和测试方面,它比应用程序委托提供了更多功能。 但是,这很不方便,因为一旦应用程序变得比几个文件大,您就必须复制很多副本。 此外,Playground文件通常按其写入顺序进行编译和运行,并且一行代码不知道在其下写入的任何内容。 因此,一旦程序变得有些复杂,就会引入一些问题。 知道有一种方法可以在Xcode项目中直接创建运动场文件,我认为必须有一种方法可以使该项目中的所有内容在该运动场中可用,并且肯定有! 随意打开Xcode,然后逐步学习,并逐步分享一些代码。 首先,让我们创建并命名一个新项目。 完成此操作后,右键单击左侧文件结构中的任意位置,然后单击“新建文件”,就像添加新的swift文件一样。 从这里选择游乐场,如下所示。 让我们创建更多文件,以便我们也可以进行一些测试。 请参阅下面的示例。 现在我们已经创建了一些测试文件,让我们进入我们的操场并尝试创建一个人。 您会注意到在自动完成中没有可用的初始化程序,并且您将收到类似以下的错误。 仅仅因为游乐场存在于Xcode项目中并不能使项目中的所有内容都可用。 我们将必须在项目中创建一个框架,然后将该框架导入操场。 要创建框架,请单击文件->新建->目标。 从菜单中选择Cocoa Touch Framework,然后单击下一步。 命名框架,然后单击完成。 保留所有其他选项不变。 单击完成之前,您的屏幕应如下所示。 现在已经创建了框架,我们必须将项目中的文件添加到其中,以便在导入框架时可以对其进行访问。 如果单击“个人”文件,您将在文件检查器中注意到创建的框架现在可用作目标成员身份。 选中框架旁边的框。 对性别和狗也要这样做。 这将包括框架中“人”,“性别”和“狗”文件的内容。 现在,让我们跳到游乐场文件。 需要像导入其他任何框架一样导入该框架。 为此,您需要在操场文件的顶部放置“ @testable import FrameworkName” 。 现在,您可以在操场上使用框架中包含的所有项目。 让我们尝试测试一些东西。 成功! 该项目的课程现在在操场上可用。 一旦对框架中包含的任何项目进行了更改,这些更改将不会在操场上反映出来,直到代码被编译。 通常,在框架方面,“干净”和“构建”是您的好朋友,因此,如果一切工作不正常,这应该是进行故障排除的第一步。 此外,在将新文件添加到项目中时,可以在创建文件时通过选择适当的目标将它们添加到框架中。 让我们向项目添加一个汽车类。 通过在DemoKit目标旁边放置一个对勾标记,汽车类将立即添加到框架中。 现在,我们将一些代码添加到car类中,然后进行构建并查看它是否在Playground文件中可用。 另外,让我们更新Person类,使其包含类型为“ […]

在Xcode 10 Playgrounds中使用3rd party框架

注意:这是上一篇文章的Xcode 10更新,但有一些补充。 Xcode Playgrounds是编写代码原型甚至练习测试驱动开发的好地方。 有时,第三方库可能会方便使用。 在本文中,我将向您展示两种在框架中使用Xcode Playgrounds的方法。 第三方框架不能简单地包含在游乐场中,甚至不能作为“来源”的一部分: 假设我们有一个要在操场上测试的框架-在下面的示例中,我选择了一个著名的库:由多产的开源和作者Marin Todorov编写的SwiftSpinner。 下载的档案包含可以直接打开的Xcode项目。 确保项目构建成功(Cmd + B) 操场 现在,让我们创建要使用的游乐场-从菜单中选择“文件”>“新建”>“游乐场”,确保它是一个iOS游乐场,然后选择“单一视图”模板。 您可以使用默认名称(MyPlayground.playground)并将其存储在框架本身中: 创建游乐场后,切换到“助手编辑器”以查看游乐场输出: 现在,使用该框架非常容易: 将其导入顶部: 让我们看看如何在操场上使用多个框架。 我们将使用相同的SwiftSpinner和Alamofile。 首先,下载两个库并将它们并排存储在文件夹中: 现在,我们将像以前一样打开SwiftSpinner Xcode项目,并围绕它创建一个工作区-从菜单中选择:File> Save as Workspace。 我将其命名为:Playground.workspace,并将其保存在两个文件夹旁边: 添加第二个框架 现在,让我们添加第二个框架—从Alamofire主项目中,将Alamofire.xcodeproj(确保您添加了项目而不是Alamofire.xcworkspace)拖放到SwiftSpinner项目旁边的工作区中。 现在,工作空间应包含来自两个框架的方案。 操场 与上一节一样,我们将创建一个游乐场-从菜单中选择“文件”>“新建”>“游乐场”,确保它是一个iOS游乐场,然后选择“单视图”模板。 确保将其添加到“游乐场”组。 一种统治所有人的方案 现在,在使用框架之前,我们必须一个一个地构建它们。 虽然对于我们而言,这并不难,但是如果使用更多的它们,或者如果您在操场上使用它们时积极开发它们,可能会很麻烦。 为此,我们将添加一个将构建所有框架的新方案。 从方案选择器中,选择“新方案…”: 确保目标是“无” —我已将其命名为“我的游乐场”: 在下一个屏幕的Build类别下,使用小+按钮添加从属目标-这是应如何配置的: 点击“关闭”。 现在,每次您建立Playground目标时,也会建立所有的依存关系。 注意:请确保您要为模拟器而不是真实设备而构建。 使用框架 现在可以像以前一样使用这些框架: 导入它们 快乐的游乐场! 🤓

Swift Playgrounds的生活游戏-第3部分

这本《人生游戏》系列是我题为“ Swimulations in Swift”的书中的改编章节。 因为我已经在书中介绍了基础知识,所以本文假定您已经对Swift Playgrounds有所了解。 如果您想了解更多有关使用Swift编程语言编写模拟或与Playgrounds纠缠的知识,则可以从平价或电子书格式的最受欢迎的在线零售商处购买我的书。 我也可以租用! 游戏规则 现在,我们的细胞遍布整个世界,但目前它们已被及时冻结。 他们出生了,但是什么也没发生。 我们需要一种方法来推动世界前进并应用游戏规则。 返回World.swift并创建一个名为updateCells()的新函数。 在此函数内部,我们将创建一个新的临时数组,该数组将保存更新的单元格以及活动单元格数组。 每次单击视图时,游戏都会向前迈进另一代。 随着时间的流逝,模拟最终会稳定下来。您会发现许多游戏都会出现一些常见的模式。 如果您有兴趣了解更多信息,请在Wikipedia上找到大量的信息。 奖金 持续单击以查看结果会在一段时间后变得无聊。 因此,让我们自己运行游戏。 导航到WorldView.swift文件,并将此函数添加到类的底部: .now()是当前时间,但是如果我们希望代码暂停一会儿,我们可以添加一些额外的时间。 在这种情况下,为0.2秒。 然后,返回您的主swift文件,并在view上调用autoRun() 。 现在,游乐场将永远运行,或者直到您手动结束。

在Swift-4中玩闭包(第-1部分)

根据快速的编程语言 闭包是可以独立传递的功能块,可以在代码中传递和使用。 Swift中的闭包类似于C和Objective-C中的块以及其他编程语言中的lambda。 简单来说,闭包是没有名称的函数,它们只是从定义它们的上下文中捕获并存储对任何常量和变量的引用。 这称为关闭这些常量和变量。 闭包表达式语法 {(参数)->返回类型 陈述 } 让我们从一个简单的闭合开始,它打印一条消息 在上面的示例中,创建了一个简单的闭包并分配给myfirstClosure 。我们也可以说创建了一个没有名称的函数,我们可以像普通函数一样调用它。 myfirstClosure() 带参数的闭包 闭包可以接受参数。要使闭包接受参数,我们必须在括号内列出它们,然后我们必须在 关键字中编写 这样,闭包主体就可以在此之后启动。带参数的闭包示例如下。 让myfirstClosure = {(withParameter:String)在 打印(“最后,我用\(withParameter)创建了我的第一个闭包”) } myfirstClosure(“ firstparameters”) 而输出将是 最后,我用firstparameters创建了我的第一个Closure 具有返回值类型的闭包 闭包也可以返回值。因此,要使闭包返回值,我们需要对闭包进行少量修改,例如Syntax。在括号中列出参数后,我们必须编写-> datatype,然后输入In Keyword,最后使用return像普通函数一样。示例如下。 闭包作为参数:- 我们也可以像函数的参数一样传递闭包,就像我们将字符串或整数作为函数的参数传递一样。但是这样做时,我们在语法上要做的事情很少。在函数内部定义每个参数类型时,当闭包用作函数内的参数时,如果我们什么都不返回,则需要将闭包(参数)类型指定为()-> datatype ,我们可以简单地将语法更改为()-> Void。 这里的void什么都没有。示例定义如下 导入UIKit 让闭包= { 打印(“我是一个简单的封闭者”) } func simplefunctionWithClosures(closure:()-> Void){ 打印(“要求关闭”) 关闭() print(“ Closure被调用,用作函数的参数”) } simplefunctionWithClosures(关闭:关闭) 输出在这里 尾随闭包 当我们需要将闭包表达式作为函数的最终参数传递给函数且闭包表达式过长时,将其写为尾随闭包可能会很有用。尾随闭包会在函数调用的括号后编写,即使它仍然存在函数的参数。当使用尾随闭包语法时,我们不会在函数调用的过程中编写闭包的参数标签。这是swift官方文档所说的。 我们将在本文中讨论更多有关此的内容。

RectUtil – iOS CGRect实用程序

CGRect是一个功能强大的结构,用于设置屏幕上视图的位置,大小和框架。 RectUtil是CGRect的语法糖,可实现相同的功能。 它涵盖了CGRect的基本功能。 与CGRect互动时,它将使您的生活更轻松。 该实用程序具有以下功能: 更改框架的原点X和Y 易于更改框架的大小(宽度和高度) 框架收缩高度 寻找两点之间的距离 更改容器视图内视图的中心 下载示例项目 如何运行: 打开项目文件 选择GeometryPlayground.playground 选择显示助手编辑器。 热键: cmd + alt + enter 下面的代码将在操场上呈现您的视图: XCPlaygroundPage.currentPage.liveView = superView RectUtil方法: 当您想要更改帧的原点X或Y值时: button.frame = CGRectUtility.GMRectWithSetXOrigin(rect: button.frame, newXOrigin: 20.0) button.frame = CGRectUtility.GMRectWithSetYOrigin(rect: button.frame, newXOrigin: 20.0) 您也可以一起做: button.frame = CGRectUtility.GMRectWithSetXAndYOrigin(rect: button.frame, newXOrigin: 10.0, newYOrigin: 10.0) 在下面使用以更改框架的宽度或高度: button.frame = CGRectUtility.GMRectWithSetWidth(rect: button.frame, newWidth: 300.0) […]