Tag: xcode

Xcode da Code Coveragekullanımı

使用者介面测试介面X的LLVM使用者测试,X的LLVM测试结果,测试使用者的测试范围。 Başkabir makalede国家公园gzerehoşçakalın🙂

插座系列

在Flatiron School的iOS沉浸式课程的第二周,我几乎快要结束了。 当涉及到我的环境时,我一直认为自己是一个悠闲的家伙。 但是,在纽约待了一个多星期之后,我意识到我肯定是100%认证的整齐怪胎! 因此,当我在Xcode的Interface Builder: Outlet Collections中工作时遇到一个有趣的选择时,我的想象力被激起了,这并不奇怪。 到目前为止,我们主要使用IBOutlet构建了noob应用程序,这已经足以满足视图中相对较少数量的对象的需求。 但是,在第一天创建Tic Tac Toe应用程序时,我的朋友Will Robinson建议我们使用插座集合来管理众多按钮标签和操作。 插座集合使对象的状态更改(例如颜色,文本内容,隐藏状态等)更易于编码。 例如,在我合作的TicTacToe应用程序中,为网格的每个部分提供9个单独的按钮比为网格的每个部分提供9个单独的按钮要干净得多。 我们今天不会制作TicTacToe。 取而代之的是,我们将把一些标签放在一起作为Outlet Collection进行操作,以便快速分享它们的潜力。 首先,我们需要创建一个插座集合。 如果您想继续使用Xcode,建议您至少在两行中放置一些标签,因为这将有助于说明插座集合创建其初始顺序的方式。 即,集合的初始项目顺序是您添加它们的顺序。 因此,一旦在多行中创建了标签,请确定将标签添加到集合中的顺序。 我将从左到右,从上到下。 Ctrl将第一个标签拖动到View Controller.swift中。 系统将提示您选择一些选项并命名您的插座。 首先,确保选择连接类型为“ 插座集合”。 这将允许您向收藏夹添加其他标签。 创建您的Outlet Collection后,您将要开始将其余标签添加到该Collection中。 为此,您可以将集合的IBOutlet旁边的连接圈一次拖到情节提要中的每个标签上。 同样,我从左到右,从上到下进行了此操作。 ( 注意:在Swift 3.0中,UILabel集合可以访问类似数组的方法,因此可以使用.remove和.insert等方法来访问和操纵成员标签的位置。想想所有的程序化组织能够做到!) 现在,我们将如何控制这些标签? 简单! 由于我们已按照特定顺序将它们添加到集合中,因此我们可以根据该顺序引用它们! 例如,可以根据您在标签中放置标签的顺序(通过labelGroup [0] = Label1,labelGroup [1] = Label2,依此类推)通过labelGroup [index]来操作我的标签。 您可以通过放置几个打印命令并在ViewDidLoad()中设置labelGroup [0] =“ Hi!”来验证这一点。 现在,当我运行此应用程序时,我可以看到在日志中打印了可选字符串: ( 注意:请注意,我的日志仅显示打印行。如果您要这样做,请执行以下操作: 单击以下菜单: […]

操场上的UI编程

Applicationยปกติในการพัฒนา应用程序บนiOSส่วนของUIก็จะใช้เครื่องมือแสนสบายอย่างStoryboard(ถ้าเป็นก่อนหน้านี้ก็Interface Builder)กันมานานแล้วแต่ถึงแม้จะสะดวกสบายก็ยังมีข้อเสียอยู่หลายอย่างเช่น งCode故事脚本生成boardนมาทำให้合并ทำให้ยากมาก(Xcode 8ปรับปรุงแล้วนะ冲突กันอยแต่ก็าง) layรื่องของAutolayoutที่แก้ไขยากยิ่งกับ视图ที่การจัดวางซับซ้อนมากๆ动画ืนยุ่งกับ约束ุ่งกับยมันปวดหัวสุดๆในการนั่งไล่debugว่าอะไรเป็นอะไร SeายSegueIdentifier Flowิดเดีมมมมมมัgh gh Spaghettiดีๆี่เก็ี่เี่เ Story Story Storyboardใน版本หลังๆจะพัฒนาขึ้นมาได้มากซักแค่ไหนก็ดูเหมือนว่าถ้าเป็นหน้าที่布局ซับซ้อนมากๆเขียนUIด้วยโค้ดมันซะเลยมันก็ยังโอเคกว่าในระยะยาว UIาเป็นเมื่อก่อนการจินตนาการUIไว้ในหัวมันเป็นเนเรื่องยากและใช้เวลานานมากๆต้องเขียนไปbuildแต่เดี๋ยแต่เดี๋นี้มันง่ายขึ้นเยอะด้วย งทำย์ขอContentอผมจะต้องทำTableViewเป็Content Content Contentๆๆๆ์ขทั้ง์ขcell์ข์ข ถูกต้อง100%”(ไม่งั้นTableViewจะไม่คำนวนความสูงให้) Playรื่องมือที่ผมจะใช้คือ游乐场,cocoapods-游乐场และSnapKit cocoapods-playground เป็นเครื่องมือที่ช่วยที่ช่วราสร้าง游乐场项目ที่ติดตั้งpodsต่างๆไว้ด้วยได้สามารถติดตั้งและตามขั้นตอนที่https://github.com/segiddins/ThisCouldBeUsButYouPlayingส่วน SnapKit Kit น Library codeยน代码故事板แบบเต็มๆ(เพราะมันเทอะทะเหลือเกิน) ผมไปที่ริ่มต้นผมไปที่พิมพ์คำสั่ง $荚游乐场SnapKit Playากนั้น游乐场项目ที่มีCocoapodก็จะถูกสร้างขึ้นมาเปิดไฟล์SnapKit.xcworkspaceแล้วเลือก SnapKitPlayground scheme แล้ว构建ซะครั้งนึงรราก็จะ导入SnapKitเข้ามาใน操场เราได้แล้ว代码บรรทัดที่เกี่รทัดที่เกี่ยวข้องกับงกับาร导入จะเป็นแบบน งากนั้นเราก็สร้างcellขึ้นมาตามปกติ ได้อเราได้Cellตามที่ออกแบบและทดสอบสมใจก็复制โค้ดไปวางในViewของโปรเจคหลักได้เลยหรือใครจะสร้างเป็น文件ย่อยๆแล้วยกทั้งไฟล์ไปไว้เลยกทั้งไฟล์ไปไว้เลากันครับfile 权衡权衡มีข้อดีก็มีข้อมีข้ยครับวิธีนี้ผมชอบนะแต่ก็มีข้อเสียอยู่บ้างเหมือนกันดังนี้ งๆารแสดงผลบนหน้าจอขนาดต่างๆ —จะเห็นว่ามัน渲染เป็น默认大小storyยวบน故事板 ไม่支持选型课 — viewาจะทดสอบว่า视图แสดงผลอย่างไรบน特质ต่างๆของแต่ละ选型课…หมดสิทธิ์ครับ การจัดการ资源,渲染性能 —การจะใช้รูป,字体ต้อะๆาใส่เพิ่มเข้าไปอไปรวมถึงถ้ารูปใหญ่ๆimage(xcodeปิดตัวเอง)ไปเลยไปเล 安卓系统 —安卓系统开发者Layout.xml 调试侦听 — กนเป็องที่ปกติยที่ใหญ่ที่สุด ของ วิธี การนี้เลยถ้าเราลืมทำอะไรไปซักอย่างที่ปกติXcodeจะมีนจะมีfix-itให้นทำให้มันไม่渲染视图ขึ้นมาให้เราดูก็หากันไปทีละบรรทัด ยังกะเขียนเวบแน่ะตรงนี้หวังว่า游乐场版本หลังๆจะแก้ไขให้เราเนอะ งรับผมผมว่ามันสะดวกกับการทำงานแบบขึ้นโครง视图เป็นชิ้นเล็กๆก่อนนำไปประกอบรวมกันเป็น视图ใหญ่ๆอีกทีและผมชอบวิธีนี้มากกว่ากาการไปวาง布局ในStoryboardแล้วหล่ะ ส่วนคุณจะเลือกใช้ยังไงก็ลองดูตามความเหมาะสมและพึงพอใจครับ🙂 故障排除 ลิสต์ปัญหาที่อาจจะเจอได้บ่อยๆผมรวบรวมไว้ให้แก้ได้ง่ายๆ Use […]

Xcode 9的新增功能:值得期待的5大功能。

苹果的WWDC 2017正在进行中,对于开发人员我们已经有了一些好消息! 在平台状态联盟主题演讲中,我最喜欢的是围绕Xcode进行的改进。 因此,我决定将自己最希望在Xcode 9中玩的东西排在前5位。请注意,新的Xcode编辑器已在Swift中从头开始完全重写,这使得它在许多方面都快得多🎉 1.在Swift中重构 终于啊! 我一直期待着这件事,因为Swift一直存在,他们终于交付了! Cmd + Shift + F消失了,您错过了一些变量重命名,或者不小心修改了一个不相关的变量。 剪切+粘贴+修改以提取方法的方法已经一去不复返了。 我们终于可以使用这些了! 尽管Xcode像今天提供JetBrains一样提供高级重构工具还有很长的路要走,但它提供了最常见的工具,例如添加代码段,提取方法和变量以及与Swift,Objective-C甚至Storyboard文件一起使用的全局重命名。 我们必须从某个地方开始吗? 2.更聪明地修复its Xcode的另一个不错的改进是更智能的“修复它”。 还记得实现UICollectionViewDataSource , CMD +单击它,然后从中复制粘贴所需方法的时间吗? 好吧,有了新的Xcode,您只需单击即可获得所有这些! 除了添加缺少的协议要求之外,还有“修复它”的功能,可以为抽象方法添加缺少的替代,添加缺少的实现存根,围绕仅在特定iOS版本中可用的API添加if else语句等。 从长远来看,这可以极大地提高您的开发速度。 3.模拟器…s! 🔄 🎉🎉! 现在,我们可以启动多个模拟器,无论是iPhone还是iPad! 我只是尝试了一下,它看起来很棒。 另外,它们是完全可调整大小的。 4.无线调试📲 是的,您没看错! 为您的iOS应用程序进行无线测试和调试! 不再需要使用该电缆。 我们长久了 等待这一天。 5.源代码控制📑 最后但并非最不重要的一点是,Apple在Xcode内添加了一个很棒的Source Control Navigator。 它显示您的工作副本,分支的详细信息,文件更改等。您还可以执行诸如创建分支之类的操作。 作为Atom和VSCode的用户,我很高兴Xcode决定采取类似的方法将某种形式的Source Control集成到编辑器中。 另一个很酷的事情是与Github的合作! 它已完全集成到Xcode中,您现在可以克隆存储库,签出自述文件,添加星标等等。 奖金 作为奖励,我想添加两件事: Xcode现在有一个MarkDown编辑器,很好! 还记得将文件从一个组移动到另一个组时非常烦人的组与文件夹问题吗? 好了,有了新的Xcode,它终于解决了! 您不必再担心🎉

修复Xcode中自动完成功能的怪异技巧

问题来了:您的项目编译正常,但是自动完成似乎总是存在以下问题: 为什么我的正确编译项目的自动完成功能会出现错误类型?! 答:您可能将框架搜索路径设置在错误的位置。 您很可能已在下面的目标(“ A”)上设置了框架搜索路径。 但是您尚未为项目设置它(它为空): 要解决此问题,请将搜索路径添加到项目中,然后将其从目标中删除。 目标将自动从项目继承搜索路径: 看到不同? 问题在于,Xcode具有与用于实际构建项目的编译过程不同的用于计算自动完成引用的编译过程。 如果您不小心为目标而不是整个项目设置了框架搜索路径,那么您的项目似乎可以正常运行。 您甚至会为缺少的框架中的符号获得自动完成功能。 但是,对于配置错误的框架中的任何内容,您都会得到可怕的错误类型。 幸运的是,有一个简单的修复程序。 如果您的项目配置正确,则自动完成功能会很漂亮 :

自定义容器视图

在上一篇文章中,我们讨论了如何使用容器视图和情节提要引用重用视图。 我们处理的示例包含一个可重复使用的视图(带有居中标签),该视图在容器视图中多次包含在内。 视图的尺寸会自动适应容器的尺寸,但标签的内容对于每个实例均保持不变。 因此,我们如何自定义视图,以便每个实例可以具有不同的标签文本。 我们需要做的第一件事是为可重用视图创建一个自定义视图控制器类。 我将其命名为ReusableViewController (不要忘记使用身份检查器将类分配给故事板对象)。 控制器将具有标签对象的出口和文本实例变量。 使用一种熟悉的技术,我们可以在将视图控制器的每个实例加载到容器之前对其进行配置。 由于容器视图使用segues嵌入其子视图,因此我们可以像往常一样简单地在父控制器上覆盖prepare方法,并使用它在目标上设置相应的变量。 这应该够了吧。 最小的代码如下所示:

iOS Huddle#1

2016年9月22日星期四 iOS Huddle是我们每月在Black Pixel iOS团队的Slack频道中共享的最佳链接的摘要。 从BPXL Craft 如果您错过了它,这是BPXL Craft最近以iOS为中心的文章: iOS上的事件传递:第1部分 布兰登·亚历山大(Brandon Alexander)在事件交付系列的第一部分中处理触摸处理。 了解响应者链在后台如何进行手势和事件。 从水冷却器周围 Xcode 8提示 我们只是在摸索Xcode 8可以做的事情,到目前为止看起来还不错。 您可能已经注意到,该控制台比以前的版本嘈杂得多。 Russell Invanovic共享OS_ACTIVITY_MODE环境变量以将此变量设置为-11。 享受安静。 Felix Schwarz找到了方便的“⌥+⌘+ /”快捷方式,可以轻松生成文档注释。 你未来的自我感谢你。 使用iOS安全性在幕后 如今,苹果越来越多地提供更多信息,以帮助开发人员并为开发人员提供信息。 在黑帽大会上的最新演讲中,苹果安全工程与体系结构负责人IvanKrstić公开了有关如何在iOS中处理安全性的一些详细信息。 神经网络的“你好,戴夫” 您可能听说过最近的iPhone 7发布中提到的“机器学习”。 事实证明,您可以使用新的BNNS框架将此功能添加到自己的应用程序中。 Matthijs Hollemans演示了一个示例应用程序,向您展示了操作方法。 实施AVAssetResourceLoaderDelegate:操作指南 贾里德·辛克莱尔(Jared Sinclair)深入研究AVFoundation的不足之处,以找到一种减少播客应用带宽使用的解决方案。 在Swift中使用JSON 一段时间以来,似乎每周都有一个新的Swift JSON解析框架。 我们更喜欢编写自己的解析器,事实证明我们的方法与Apple建议的一些最佳实践保持一致。 通过减少动态调度来提高性能 动态调度是面向对象编程的一项关键功能,它可以实现诸如方法重写之类的功能。 通过使用Swift关键字final了解如何以及何时消除动态调度以提高运行时性能。 访问控制变更 Swift 3对访问控制进行了一些有趣的更改,这将有助于保持锁定状态。 了解新的文件专用访问级别将如何影响您的应用并计划迁移。 HTTP直播流示例 Apple提供的这些出色示例(包括基本流和高级流)使开发支持HLS的过程变得容易得多。 产生触觉反馈 iOS 10为开发工具包带来了触觉反馈。 探索如何增强应用程序以为与UIFeedbackGenerators进行触摸交互提供更丰富的反馈。 […]

使用Swift在iOS中实现推送通知

在本文中,我们将使用Swift在iOS中实现推送通知 。 实际上,此过程比以前更容易,仅需执行少量步骤: 在您的iOS项目中激活推送通知 请求用户通知权限 在Apple Push Notifications服务中注册 发送测试通知 在您的应用程序中处理通知 取得Apple开发人员帐户 首先,您需要一个Apple Developer Account来访问Apple Push Notifications服务 。 但是,如果您需要首次创建一个帐户,则可以在本帖子中看到有关如何在App Store中发布iOS应用程序的信息。 在您的iOS项目中激活推送通知 打开应用程序项目属性 ( 项目中的根图标) 通常,定义一个唯一的“ Application Bundle”名称。 例如, me.developer.ios.notifications 。 在“ 功能”部分中,激活“推送通知”。 结果,您的App ID将自动在App Store中注册 。 请求用户通知权限 要在应用程序中请求用户通知的权限,您需要向ViewController添加一些额外的方法。 您可以将其添加为单独的扩展,以使其可重复用于其他项目: 之后,您还将获得有关此过程的一些控制台输出: 授予的通知:true 用户通知设置: 我的设备令牌: 930976dfb191c5085b72aa347ad91c561a6fcdaab639c173a015f0745ee11401 在Apple Push Notifications服务中注册 创建身份验证密钥 首先,您需要转到Apple Developer帐户门户,并为您的应用程序创建一个身份验证密钥: 在键->全部下,您可以按[+]按钮创建一个新的键。 输入您的应用程序密钥的名称。 例如, PushNotificationsKey 。 保存并确认您的密钥 […]

学习Swift和iOS开发第3部分:编程和变量

在这篇激动人心的文章中,我们将讨论变量,运算符以及有关计算机如何工作的一些知识。 这不是理论系列,但是我希望您了解引擎盖下发生的一些基本原理,以便您可以建立基础。 变量在编程中用于存储可以在计算机程序中引用和操纵的信息。 它们还提供了一种使用描述性名称标记数据的方法,以便其他程序员和我们自己可以更清楚地理解我们的程序。 如果有帮助,可以将变量视为保存信息的容器。 它们的唯一目的是标记数据并将其存储在内存中,以便以后在程序中使用。 这是变量是什么以及变量如何工作的基本原理,但是现在您将在Xcode中创建一些变量,以帮助您了解变量在软件开发环境中的工作方式。 首先,如果尚未打开Xcode,请点击Create New Playground 。 给它起一个像Variables这样的名称,然后单击Next 。 选择某个位置以保存此.playground文件,然后单击“ Create以保存它。 您应该会看到类似下面的屏幕。 Xcode中的游乐场是一种测试代码段以查看代码是否以及如何工作的神奇方法。 作为我的讲师,这也是在Swift中教您基本编码原理的好方法。 默认情况下,我们刚刚创建的Playground已经包含一个变量。 上图显示了以下代码。 var str =“你好,操场” 无论您在哪里看到var ,都是变量的缩写。 您告诉计算机要创建一个变量(要将数据放入其中的容器)。 在大多数情况下,我们可以根据需要命名,但不允许使用某些名称。 例如,我们不能将数字放在变量名前面(即“ 2WeeksPay”),但是可以先使用单词,然后使用数字(即“ day1”)。 您也不能使用Swift库使用的某些保留关键字,例如let或enum或class,因此请避免使用它们。 变种 在这种情况下,让我们使用message作为变量的名称。 变量应始终具有描述性,并应告诉您变量中存储了什么。 据说您应该像第一个孩子一样谨慎地命名变量。 var消息 要给变量赋值,就像在任何数学方程式中一样,我们需要使用等号来表明变量等于某物。 var message = 我们在变量中存储了一些单词,其名称为String 。 要声明String ,必须使用双引号,如下所示: var message =“在此处插入字符串信息…” 我们在此处编写的代码的关键术语是String Literal因为我们为String Literal提供了固有的值。 稍后,我们将看到如何创建一个带有空值或根本没有值的字符串。 让我们通过从引号中删除“ Insert String information […]

IOS发行的PDF文件。

Dentro del desarrollo movil se requieren de distintas funcionalidades para tener una granaplicación。 阿尔及利亚的综合性生产者信息档案库,扩展了文档格式。 Para esto ocuparemos PDFKit。 通过苹果可视化和可操作文档进行编辑。 Utilizaremos Swift 4和Xcode(Versión9.2)参数创建教程。 Vamos a crear un proyecto desde cero en xcode,从应用程序商店购买商品。 Una vez que lo hayan abierto nosapareceráunmenú。 Le damos click en crear un nuevo proyecto。 取消对新产品的保护,在新的产品上添加新的商品,在新的产品上添加新的商品 通用产品生产,销售和设备销售总览,是通用的通用文件。 负责人(NombreDelProyecto.xcodeproj)和“部署信息”部分的“主界面” Nuestro campo de siguiente quede de […]