Tag: wwdc

Xcode 7离线视图

当使用情节提要板时,Xcode 7在Interface Builder中引入了许多改进。 情节提要参考 ,改进的Unwind Segues和Segue子类化是有用的工具,将有助于使用情节提要构建和维护复杂的应用程序。 有关这些主题的所有详细信息,可以在WWDC 2015的“故事板的新增功能”部分中找到。 在此会话中强调的一项重要的小功能是能够在任何视图控制器的场景基座中添加“脱机视图”。 如果您需要呈现一个仅在其容器视图控制器显示后才显示的复杂视图,那么您很可能使用了以下两种方法之一: 在单独的xib文件中定义视图并加载它,如下所示: 让myView = NSBundle.mainBundle()。loadNibNamed(“ MyViewNib”,所有者:self,选项:nil).first! 如! UIView self.view.addSubview(myView) 将视图定义为容器视图控制器层次结构的一部分,可能使用alpha = 0或在主视图范围之外,然后响应某些事件而显示视图。 使用单独的xib文件方法,我们必须使用上面的代码以编程方式加载视图。 如果需要将IBAction和IBOutlet直接链接到视图控制器,则可以通过将视图控制器类指定为xib文件的文件所有者来实现。 尽管这可行,但它需要几个配置步骤,如果我们可以在其视图控制器旁边看到该视图,并且能够直接链接IBAction和IBOutlet,那就更好了。 所有这些都可以通过将视图直接添加到IB中的视图控制器的层次结构中来完成,但是最终我们可以将多个视图彼此并排堆叠,并且在视觉上由于它们彼此重叠而变得难以使用。 离线视图通过将所有内容保留在同一画布中,同时清楚地显示视图控制器及其离线视图,从而大大提高了故事板的清晰度: 要将离线视图添加到视图控制器,只需将UIView(或子类)拖到视图控制器场景停靠区中,它将显示在其上方。 同样,可以根据需要添加多个脱机视图并将其链接到视图控制器。 新添加的视图可以通过CTRL +拖动到View Controller的源文件中,作为IBOutlet链接: 显示视图 如果编译并运行该应用程序,即使调试器显示已设置了相应的IBOutlet,也将看到该视图不可见。 这是因为离线视图不会自动添加到视图层次结构中。 为了显示视图,我们需要自己添加它(例如,在@IBAction方法内部): self.view.addSubview(offlineView) 如果再次构建并运行,我们将看到该视图出现在主视图的左上角,并且其大小与在“界面”构建器中指定的宽度和高度匹配。 查看尺寸 以上所有都是很棒的-但是如果我们希望离线视图成为与其超级视图范围相匹配的叠加层,该怎么办? 从Xcode 7.0 beta 3开始,无法告诉IB添加后,脱机视图应扩展到容器视图,因此我们需要以编程方式进行此操作。 幸运的是,我们的朋友自动版式可以为您提供帮助。 我们可以编写一个简单的UIView扩展类,以将所有视图锚点约束到其超级视图边缘。 有关如何完成的信息,请参见本要点。 有了这个扩展,我们的视图可以像这样锚定到超级视图的边缘: self.view.addSubview(offlineView)//这是我们的@IBOutlet offlineView.anchorAllEdgesToSuperview()// UIView扩展方法 警惕的读者会注意到,以编程方式添加约束时,translatesAutoresizingMaskIntoConstraints设置为false。 WWDC 2015的第2部分“自动布局的奥秘”部分对此做了很好的解释。 结论 脱机视图是Interface […]

AltConf 2016:Udacity炉边聊天—#4 Zev Eisenberg

Udacity的iOS团队很高兴参加AltConf 2016,我们采访了这么多出色的iOS工程师。 这是我们的第四个炉边聊天! 对于我们在AltConf 2016上进行的第四次炉边聊天,我不得不与Zev Eisenberg坐下。 Zev是Raizlabs的iOS工程师。 他还是一位经验丰富的编织者,杂耍者和事物的综合创造者! Zev在AltConf上的演讲是在BonMot上进行的,BonMot是他写的一个库,使归因于字符串的工作很愉快。 我们谈论什么 Zev和我详细讨论了BonMot,特别是关于如何使您的应用程序中漂亮的排版变得更容易的讨论。 这是在有关设计与工程交叉的大型对话中进行的。 Zev对于用户测试的重要性也有很多话要说,并为我们的学生提供了一些很好的建议: “进行可用性测试……尽可能获取广泛的测试主题,并认真听取他们的意见。” Raizlabs一直与Perkins School for the Blind合作开发一款旨在帮助盲人用户定位公交车站的应用程序,而用户测试对该过程至关重要。 “您的用户总是会让您感到惊讶的……但是……如果有人采取了行动,并且您知道他们正在尝试做什么,请不要告诉他们他们错了。 只需让您的应用对他们做出回应,让您的应用执行他们想要做的事情即可。” 我真的想问Zev的一个问题是让他对WWDC 2016感到最兴奋的事情。他说,他特别对WWDC实验室(特别是可访问性实验室)以及Xcode工具的最新变化(包括谈论最多的)大加赞赏。 -关于视觉内存调试器!)。 我强烈建议观看整个采访。 Zev是一个充满激情的人,对于个人激情和软件工程之间的协同作用,他分享了很多见解: “有很多机会可以接受您怪异的愚蠢激情,并对其进行深入研究……并将其带入编程。” 外卖 如果您需要提醒用户测试的重要性,并且准备对Xcode中可用的新工具感到非常兴奋,并且喜欢从我们的个人兴趣和编程兴趣的融合中产生伟大的软件的想法,那么我强烈建议您和我一起在Zev花一些时间! 网络上的Zev Eisenberg https://twitter.com/zeveisenberg http://zeveisenberg.com/ 请继续关注iOS工程师Mike Lee主持的Fireside Chat#5! 对iOS开发感兴趣? 无论您是编程新手还是准备进阶学习,我们都为您准备了程序。 今天就报名! iOS开发人员纳米学位计划 开始进行iOS App开发纳米学位计划

足够! #AppStoreWalkout #iToo

NotchX 自定义Notch壁纸 魔术缺口- 自定义缺口 魔术缺口- 自定义缺口 Magic Custom Notch-壁纸 NotchRemover – 自定义Notch去刘海 X的自定义缺口 自定义缺口 -魔法壁纸 魔术定制 – 缺口壁纸 定制刘海缺口 Notch Pro — 自定义 Notch 魔术定制缺口 —好奇怪 iPhone X的可爱壁纸 可爱的缺口 – 自定义缺口 魔术缺口样式 无缺口 〜 自定义和删除 缺口定制器 魔术缺口 – 自定义和删除 Costom Notch —耳朵壁纸 定制多样化缺口 当您的应用程序被克隆并且克隆使用您的应用程序名称时,除了在iTunes App Store内容争议中向Apple报告之外,您将无能为力。 我报告了这些应用。 他们花了自己的时间,向我报告的所有应用程序开发人员发出了通知。 他们都不在乎。 所有这些开发人员都在问“ Custom Notch是您的商标吗?”“向我们证明Custom Notch是您的商标!”我试图向开发人员和Apple Legal团队解释,他们违反了App Store审查指南4.1。 […]

最喜欢的WWDC 2018会议

今年,我未能通过WWDC的彩票,也错过了主题演讲直播,因为那天我在奥斯陆峡湾外的克里斯蒂安·拉迪奇(Christian Radich)上航行。 幸运的是,所有视频很快都可以在Apple Developer网站上找到,我们现在可以在Chrome或macOS上的非官方WWDC应用中观看它们。 我推荐WWDC macOS应用程序,因为它可以标记收藏夹和过滤器,还可以将播放速度调整为1.25或1.5,从而节省了一些时间。 今年WWDC将重点放在隐私,稳定性和速度上,这是我所希望的,这要归功于Apple工程师实现了这一目标,而且重新安装所谓的更稳定的iOS 12确实是现实。 作为一名iOS工程师,我喜欢把更多的精力放在我身上,这是关于Swift编程语言,Cocoa Touch中的新变化,Xcode的增强以及测试技巧。 我还想探索有关机器学习的更多信息,因此,我很高兴苹果公司通过引入Turi Create和Create ML对该技术进行了更多投资。 对我来说,API经常被弃用,并且很高兴知道它们,但是最重要的是投资于您的编程,调试和测试技能,您可以将其应用于许多其他平台。 去年收藏夹列表的下一个,下面是我最喜欢的个人笔记。 事物未按特定顺序列出。 希望你觉得它有用。 平台联盟国 如果您没有时间,则应仅观看此会话。 平台国情咨文就像开发人员的主题演讲一样,它突出了重要的变化。 隐私:Apple确认其对隐私和安全的承诺,并在iOS 12上引入了密码管理功能和自动填充功能。生成强密码,与第三密码管理集成并从SMS消息快速填充OTP字段从未如此简单。 GateKeeper也得到了一些改进,并开始要求对应用程序进行公证。 iOS 12:性能大幅提升,Siri通过快捷方式支持,FaceTime中的群组调用和分组通知功能变得更加智能。 表情符号迷也介绍了Memoji。 macOS 10.14 Mojave:带有暗模式的更多内容。 他们主要使用Xcode在黑暗模式下进行演示,这看起来很酷。 今年的WWDC横幅广告提供了有关iOS和macOS跨平台应用程序的提示,这对于Marzipan来说是部分正确的,Marzipan是允许iOS应用程序在Mac上运行的一种方式。 Xcode 10:改进了代码编辑和源代码管理更改条形指示器。 使用内存调试工具进行调试,增强LLDB性能,尤其是用并行任务完全用Swift重写的新构建系统是令人振奋的消息。 Swift 4.2:如果您遵循swift repo,那么Swift 4.2可能并不奇怪。 Swift 5计划也有公告。 机器学习:从未比这更热。 今年,我们看到了在机器学习方面的巨大投资,这些机器学习包括Create ML,Turi Create,Natural Language框架,CoreML 2和Vision中的新检测功能。 ARKit 2,watchOS 5,tvOS 12,AppStore Connect和AppStore Connect API是您不想错过的其他重要新闻。 Swift的新功能 与本次会议一起,我建议您阅读非常简洁的Swift […]

最喜欢的WWDC 2017会议

这篇博文最初在我的GitHub上。 我对WWDC的关注重点是Swift编程语言,我主要使用的iOS平台,如何使用Xcode和测试以及新的有趣框架。 在WWDC 2017中,它涉及机器学习和AR。 这是我最喜欢的课程 核心ML简介 引入ARKit:iOS增强现实 Swift的新功能 使用UIKit的高级动画 自然语言处理和您的应用 可可触摸的新功能 Foundation的新功能 使用Xcode 9进行调试 无线调试,查看控制器调试 深度核心ML 愿景框架:基于核心ML 测试中的新功能 并行测试,等待,屏幕截图,多个应用程序场景

使用XCUITests更改设置

Xcode 9增加了编写测试的能力,而现在它可以与“设置”应用程序进行交互。 如果每个人都想禁用位置或将动态字体切换为大字体? -现在有可能。 首先,我们需要像普通应用程序一样午餐设置应用程序,并提供它的捆绑包标识符。 让settingsApp = XCUIApplication(bundleIdentifier:“ com.apple.Preferences”) settingsApp.launch() 您可以与设置进行交互,就像使用应用程序一样。 由于“ [MC] 从私人有效用户设置中读取”错误,目前无法使用交互记录。 我已经提出雷达来增加这种可能性。 假设我们要打开和关闭定位服务。 我们可以这样做: settingsApp.tables.cells.staticTexts [“ Privacy”]。tap() settingsApp.tables.cells.staticTexts [“位置服务”] .tap() 如果settingsApp.switches [“位置服务”] .isSelected { settingsApp.switches [“位置服务”] .tap() settingsApp.buttons [“关闭”] .tap() }其他{ settingsApp.switches [“位置服务”] .tap() } 最好在teardDown上终止设置,这样我们将在每次测试运行时进入主设置屏幕。 settingsApp.terminate() 这是测试的实际效果: 您可以在github上找到要使用的示例项目:https://github.com/PycKamil/XCUITestSettingsExample

WWDC 2016聚焦:Swift 3

Swift在2014年发布后很快就被我们的开发人员和许多其他开发人员所采用。但是,随着Swift在WWDC 2016上宣布的第一个重大更新,苹果可以期望其编程语言在社区中得到比以往任何时候都更多的使用和优化。 苹果去年12月发布了Swift作为开源项目。 从那时起,开发人员一直在努力使语言无缝化。 此外,Apple的内部团队已在更多自己的应用程序中使用Swift,包括新的Music应用程序,Console应用程序以及Agents和Daemon画中画功能。 Xcode 8中的新文档查看器以及iOS的新Swift Playgrounds完全用Swift编写。 Swift 3是Apple开发人员和应用程序创建者广泛社区中的开发人员辛勤工作的产物。 Black Pixel开发人员Kai Schaller和我想分享一些有关该语言最近的更改以及这些更新将如何影响开发人员的初步想法。 对图书馆发表意见 直到Swift 3为止,感觉Swift的主要关注点是发展观点并维护与旧式Objective-C代码库的互操作性。 Swift 3是说“我们认为我们找到了声音”的版本。Swift3是Swift开始将其意见强加到现有库上的时候,其中的表现就是对系统提供的类进行了重命名,并删除了NS前缀。我们已经知道了几十年了。 这种变化进一步扩大,因为数十年来我们一直使用的许多C API都将进行面向对象的改造,如“ Swift API设计指南” WWDC会话中所详述。 代码迁移中的障碍 由于Swift 3是非源兼容的更改,因此Apple在Xcode中提供了迁移助手。 在一些现有的Swift代码上运行此迁移工具表明,转换几乎是无痛苦的,但是如果不更改某些类引用并修复一些不再有效的方法调用就无法完成。 当然,必须要提到的是,这些问题与迁移器的第一个beta版本有关,并且随着该工具越来越接近发行版而可能会得到修复或更改。 无法自动翻译的一些不完整的代码示例包括: Swift 3希望枚举值以小写字母开头,并且通常会自动对其进行修复。 但是,如果以完全指定的方式引用枚举值,例如“ DataError.Unknown ”,它将不会小写该值的第一个字母(在这种情况下为“ u ”)。 NSMutableURLRequest不再存在。 它已被替换为“ URLRequest ”,现在是一个结构而不是一个类。 存在的对NSMutableURLRequest的任何引用都需要手动更改。 另外,由于URLRequest是一个结构,因此如果调用任何修改请求的方法,则需要将其存储在变量( var )中而不是常量( let )中。 现在,如果方法返回值并且没有分配任何值,即使忽略返回值不是错误,这也是警告。 要使警告静音,方法调用的结果需要手动分配给“ _ ”。 转换过程中的异常 尽管有新的约定默认情况下按名称引用所有参数(而不是自动省略第一个参数名称),但是Swift 3转换过程会将“ _ ”添加到函数的第一个参数,而不是在代码中添加参数名称调用该函数。 […]

您好,Safari 11上的WebRTC

WebRTC终于来到Safari 今天早上,我醒了,我们所知道的网络已经发生了巨大的变化。 WebRTC的梦想是实现开放Web的无处不在的p2p实时通信。 作为今年Apple出色的WWDC盛宴的一部分,他们在Safari 11中提供了对WebRTC的支持。 是。 现在毫无疑问,在未来的几天,几周和几个月里,将会有很多关于该主题的优秀文章,但是我只想分享我编写的演示应用程序。 眼见为实。 如果您已升级到iOS 11开发人员beta或macOS开发人员beta,则只需转到此处并允许像其他任何WebRTC演示一样访问您的相机即可。 这在移动设备上尤其令人惊奇。 如果您通过移动设备访问,请单击视频以从面向用户的摄像头切换到面向环境的摄像头。 如果您以前使用过WebRTC,则不会有很多重大更改,但是我个人之前没有处理过摄像机的选择,因此,这是我为该演示编写的代码的细分。 首先创建一个 dom元素,并为其提供以下属性。 var video = document.createElement(’video’); video.style.width = document.width +’px’; video.style.height = document.height +’px’; video.setAttribute(’autoplay’,”); video.setAttribute(’muted’,”); video.setAttribute(’playsinline’,”); 下一步,设置您的WebRTC约束,包括视频将面对的方式。 在这种情况下,我希望它面向用户。 var FaceingMode =“用户”; var约束= { 音频:错误, 视频: { faceingMode:faceingMode } } 然后通过传递约束并侦听成功回调来启动getUserMedia 。 如果一切顺利,请将该流作为视频dom元素上的src传递。 navigator.mediaDevices.getUserMedia(constraints).then(function success(stream){ video.srcObject =流; }); 最后,将视频dom元素附加到您的身体上。 document.body.appendChild(video); 只是为了好玩……这是一段代码片段,可通过单击视频在手机上从正面和背面的摄像头翻转。 video.addEventListener(’click’,function(){ […]

WWDC 2017

WWDC的核心,Apple的но,похоже LLVM,Xcode等 苹果,похоже,решили,чтонеплохобылобыподдерживатьC ++。 Вэтомгоду的Xcodeполучилподдержкурефакторингавплюсах,причемто,чтопоказали,выглядитдостаточновкусно – умный重命名,которыйможетвшаблоны,генерациятелметодовподекларации,экстракты – вобщем,то,чтовнормальныхязыкахнормальныеIDEумеютужеочень давно,теперьможетзаработатьивплюсах。 Аможетинезаработать,этожеXcode。 Крометого,вродекактеперьможнозапускатьнесколькосимуляторовсразу,равнокакистартоватьbot’овдляCIпрямонамашинеразработчика,неустанавливаяMacOS的服务器。 苹果LLVMполучилускоренныйLTO,пакновыхпроверок,未定义的行为消毒剂(возможно,онаужеесть,нотеперьможнобудетвключатьитрогатьеёизUI’чикаXcode中),поддержкунесколькихC ++ 17конструкций。 Существующиеуже线程и地址сUI的санитайзерынаучилисьнесколькимновымтрюкамсотображениемихвUI-е。 Dyldполучилграндиозноеобновлениедотретьейверсии(с2005-гопримерногодабылаверсия2)。 Теперьонразделеннатричасти,одна – демон,анализирующийзависимостимеждубинарникамиидинамическимибиблиотекамиикеширующаяихвтакназываемые“倒闭潮”,другая – небольшаячасть,запускаемаяпередстартомприложения,изагружающаяэтисамые关闭,и,наконец,кешдля关闭。 关闭теперьявляетсяихцентральнойконцепцией,посути,этозакешированноезнаниеотом,какиединамическибиблиотекиикакнеобходимозагрузитьдлякаждогоприложения。 苹果обещают,чтостартприложенийдолженускориться。 Крометого,винструментахдобавилиспециальныйтиппроверкидляпрофилировкивременистартаприложения – тогостарта,чтопроисходитпередвызовомнепосредственноmain’а。 Интересныеtalk’и: LLVM中的新功能(тольковтораяполовина)(https://developer.apple.com/videos/play/wwdc2017/411/) 应用启动时间:过去,现在和将来(https://developer.apple.com/videos/play/wwdc2017/413/) 使用Xcode运行时工具查找错误(https://developer.apple.com/videos/play/wwdc2017/406/) 大中央派遣 ВНЕЗАПНОполучилобновление。 ДобавилсяновыйвкусныйAPI,即使用отслеживанияфайловсподписываниемнасобытия。 Крометого,многоговорятотом,насколькоэффективноегоисполозоватьдлямногопотоносто/к Вцелом,разработчикампод的iOSсмотретьобязательно,остальным-толькоеслихочетсяувидетьприятныйинтерфейсдлятаскдиспатчера,ането,чтообычновидите。 现代化大中央调度的使用(https://developer.apple.com/videos/play/wwdc2017/706/) SiriKit Небольшоеэволюционноеобновление。 Улучшилидомен付款(вообщеговорили,чтоегодобавили,но,по-моему,онитакбыл),добавилидомен。 Иеслипоследнийвыглядиткакигрушка(сканированиекодов,какобщепринятых,вродеQR,такикастомных,вродетех,чтоиспользуютсяFacebook的Messenger’ом),то列表和注释смотритсякакнечтодействительнополезное – теперьлюбоеприложениеможетсоздаватьчек-листыили ноуткиспомощьюSiri。 SiriKit的新增功能(https://developer.apple.com/videos/play/wwdc2017/214/) 核心ML То,чтополностьюоправдываетсуществованиеWWDC 2017主题。 Новыйфреймворк,созданныйдляоблегченияработыс机器学习。 И,похоже,этоемуудается。 Приложениючерез的Xcodeскармливаетсяфайлстакназываемоймоделью,вкоторойможетбытьнасамомделеоченьмногоразныхвещей – обученнаянейроннаясеть,кпримеру,хотяподдерживаютсянетолькосети。 关于Xcode,请使用Swift’еилиObjective-C,这是которыйможнотутиетотелиили的完整版本。 Придеплоеприложениясамамодельуезжаетнаустройствоввидебандларесурсов。 […]

iTunes Connect中的分阶段发行

今年WWDC上宣布的一项不错的新功能是分阶段发布。 这是一项新功能,能够在7天内逐步向用户发布应用更新。 长期以来,这一直使iOS开发人员羡慕他们的Android开发人员同事。 分阶段发布的功能与Android分阶段发布的功能不同,但它肯定比同时向数百万用户发布的功能要好得多。 那么它是怎样工作的? 如果您选择分阶段发布,则iTunes Connect将逐步向选择在7天之内进行自动更新的用户发布新版本。 所有用户仍然可以绕过此操作,如果选择的话,可以直接进入应用商店以下载新版本。 它的增加如下: 第一天:1% 第2天:2% 第三天:5% 第4天:10% 第5天:20% 第6天:50% 第7天:100% 如果有问题怎么办? 您可以随时暂停发布,最长总暂停时间为30天。 这是一个累积数字,如果您取消暂停并再次暂停,则不会重置。 如果存在无法解决的关键问题,则可以停止销售该应用程序版本,尽管这样做会从商店中删除该应用程序,因此这是最后的选择。 如果我想向所有人释放怎么办? 您可以随时取消分阶段发布并释放给所有用户。 在iTunes Connect中,您只需按“发布给所有用户”。 这听起来不错,我该如何选择加入? 选择加入确实非常简单,而且只要您没有问题,一切都可以为您管理,因此一切顺利。 iTunes Connect中有一个新的单选按钮,“使用分阶段发行”。 如果选择了,就是这样! is这是每个版本的功能,因此由您决定是否需要通过此分阶段的过程。 如何监视发布状态? 同样,从iTunes Connect。 有了分阶段发布的新视图,它可以向您显示当前所处的发布阶段。