Tag: 教程

NSFW模型的iOS CoreML项目[Swift]

一个使用CoreML和开放nsfw模型的小型iOS项目。 自从WWDC2017首次宣布以来,Apple的Core ML已经问世了一段时间。 这是一个令人兴奋的新框架,有了iOS 11,在macOS和iOS上运行ML模型变得更加容易。 Apple提供了许多已经采用Core ML模型格式的开源模型,可以在这里找到。 我的示例项目将使用Yahoo的开放式nsfw模型和python coremltools进行转换。 为了编写Core ML并在您的设备上运行它,您将需要: Xcode 9 Beta iOS 11测试版 打开nsfw模型 Python coremltools 0.4.0 我不会详细介绍安装Python的细节。 您将需要Python 2.7作为coremltools。 入门项目 我已经编写了一些UI代码,因此您可以专注于对ML部分进行编码🙂 1.将.caffemodel转换为.mlmodel 由于Yahoo的开放式nsfw模型为caffe模型格式,因此我们需要首先将其转换为CoreML模型格式。 我用python coremltools编写了一个简短的脚本来完成该任务。 该软件包的文档可以在这里找到。 在您刚刚从Yahoo的GitHub页面下载的“ open_nsfw_master ”项目中,进入其子文件夹“ nsfw_model ”并创建convert.py 。 import coremltools#将caffe模型转换为Core ML模型caffe_model =(’resnet_50_1by2_nsfw.caffemodel’,’deploy.prototxt’) coreml_model = coremltools.converters.caffe.convert(caffe_model, image_input_names =’数据’, is_bgr = True, red_bias = -104, blue_bias = -123, green_bias […]

使用Xcode,Swift滑出菜单。

返回Main.storyboard,然后将导航栏按钮项拖到导航栏的左上方: 让我们给导航栏添加一个标题,转到Attributes Inspector并为您命名任意标题,在这种情况下,我将其命名为Slide Out Menu。 接下来,我将更改背景色,以便您可以在点击“滑动菜单”时注意到它。 您可以将颜色更改为自己喜欢的任何颜色,或者将其添加到另一个项目中,只需按原样保留颜色即可(在以下步骤中将了解原因)。 要更改背景颜色,请选择“ 视图”,然后转到“ 属性”检查器,然后选择“ 背景”以更改颜色。 到目前为止,它应该是这样: 由于我们希望用户能够点击“菜单”图标,因此我们需要调出一个可以与其交互的视图 。 接下来,我们将放置对象库中的视图 ,并将其放置在左侧导航栏的下方,如下所示: 现在,让我们在刚创建的视图上设置一些约束 : 我们还可以通过转到视图的“ 属性”检查器并单击“ 背景”来更改视图的颜色。 随便更改颜色。 就我而言,我选择了较深的颜色,因此在视觉上对用户有吸引力。 现在从对象库中拖动一个按钮 ,并将其放在我们刚刚创建的侧视图中。 PROtip-您可以添加任意数量的按钮,并且每个按钮都需要一个不同的ViewController(DUH!自我说明)。 不要忘记为所有按钮添加约束 : 是时候弄脏我们的双手了! 让我们添加一些代码,以便我们的用户可以与我们刚创建的所有内容进行交互! 听起来很有趣吧?! 好吧放手,转到您的ViewController.swift文件,并使用Control-drag选项并创建IBOutlet来连接侧面View的主要约束,如下所示: 让我们通过选择图标(在我的情况下是“汉堡菜单”图标)并将其拖动到“助理编辑器”中,为“ 条形按钮项”添加动作: 现在,我们创建一个变量来跟踪是否显示或不显示“滑出菜单”: var menuShowing = false (第13行) 在上图中,我们将菜单设置为在点击时显示,而在用户再次点击菜单图标时不显示。 现在,让我们变得更加时髦,并向“滑出菜单”添加动画: 这是滑出菜单的视频!

通过布局锚点自动布局

通过视觉格式语言添加约束非常容易和有趣。 但是一旦我们有了复杂的观点,这将成为一项艰巨的任务。 如果事情没有按预期进行并且需要调试约束,则将变得更加困难。 或者,如果视图是由其他人创建的,并且您需要在一个已经有很多标签及其对应的文本字段的大表格中的另一个文本字段中滑动。 营救布置锚点 布局锚是Apple在iOS 9中引入的一种机制。这是一种添加可读性和简洁性的约束的全新方法。 根据类的定义: NSLayoutAnchor: 一个工厂类,用于使用流畅的API创建布局约束对象。 使用这些约束可以通过“自动布局”以编程方式定义布局。 与其直接创建NSLayoutConstraint对象,不如从要约束的UIView,NSView或UILayoutGuide对象开始,然后选择该对象的锚点属性之一。 布局锚是在UIView,NSView或UILayoutGuide上定义的属性。 在本文中,我们将集中讨论UIView上定义的Layout Anchor属性。 在UIView上总共定义了12个Layout Anchor属性。 它们可以分为三种类型。 水平 , 垂直和尺寸 。 从NSLayoutAnchor类派生的每种类型对应三个独立的类。 NSLayoutXAxisAnchor , NSLayoutYAxisAnchor和NSLayoutDimension 。 水平布局锚 这些是锚属性,用于添加水平约束或沿视图X轴的约束。 这些是NSLayoutXAxisAnchor类的实例。 这些包含以下锚点: 领先的锚 尾锚 左锚 右锚 Center-X锚 在这里,所有约束都是不言自明的。 值得指出的一个区别是,前导锚和尾锚是动态的,并且可能会根据语言环境的方向而变化。 也就是说,对于LTR(从左到右)语言,它们将从左到右,对于RTL语言,则将从右到左。 相反,无论如何,左右锚点始终保持左右。 垂直布局锚 这些是锚属性,用于沿视图的Y轴添加约束。 NSlayoutYAxisAnchor类的实例,这些属性包含以下锚点: 顶锚 底部锚 中心Y型锚 第一基准锚 最后基准锚 在此,第一基线是多行标签中第一行文本的基线。 同样,最后基线是多行标签中文本最后一行的基线。 如果文本为单行,则它们将相同。 尺寸布局锚 这些定位点定义视图的大小。 它们是NSLayoutDimension类的实例。 其中包含以下锚点: […]

将Fastlane集成到iOS项目:第1课

在使用Fastlane之前,它需要完成以下安装。 安装Ruby版本管理器(RVM) Fastlane由Ruby编写,建议安装Ruby Version Manager(RVM),以帮助您管理ruby路径,价值和配置问题。 安装指南参考RVM安装指南。 安装mpapis公钥 gpg-密钥服务器hkp://keys.gnupg.net-接收密钥409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB 使用Ruby安装稳定的RVM \ curl -sSL https://get.rvm.io | bash -s稳定–ruby 安装Xcode 在Mac中打开您的App Store应用,搜索Xcode并下载。 如果要下载其他版本,请检查Beta版本或更旧的版本。 安装Xcode命令行工具 Xcode命令行工具可帮助您为Xcode做命令行开发人员。 安装Xcode命令行工具 xcode-select-安装 安装Fastlane 通过gem安装Fastlane [sudo] gem install fastlane -NV 检查Fastlane是否已安装 哪个快车道 如果成功安装了Fastlane,它将在您的终端中显示已安装的路径。 解决UTF-8问题 Fastlane需要正确的环境才能交付构建。 请执行以下步骤来解决UTF-8问题。 cd〜/。 打开。 点击Shift + command + . 显示所有隐藏文件夹(您可以在Mac中使用它显示/隐藏隐藏文件夹)。 打开名为.bash_profile文件,将以下代码复制并粘贴到该文件中。 导出LC_ALL = zh_CN.UTF-8 出口LANG = en_US.UTF-8 下一步是什么? 下一课,我们将开始将Fastlane集成到您的iOS项目中。

ГенерацияXcode-проекта

讲解 project.pbxproj的Решениепроблемыmerge-конфликтов 是iOS上的“Наверняка”,是“резолва”的merge-конфликтов。 Есликонфликтуютизменениявисходныхфайлах,тотутнетособойболи,всезакономерно。 Xcode-проектаproject.pbxproj中的Другоедело,когдаконфликты,ведьихсложнеерешатьиони。 Носамаябольшаядосадавтом,чтотакиеконфликтынеоправданы,ведьзачастуюонипоявляютсяприпростомдобавленииилиперемещениифайловвсливаемыхветках。 Вчемпроблема? 使用project.pbxproj васлантельбазойданныхислишкоммногонасебяберет: структурупроекта настройкипроекта настройкикаждоготаргета индексациюфайловисходников Ковсемупрочему, project.pbxproj属性列表(NeXTSTEP)тере Такимобразом,индексацияисходныхфайловвproject.pbxprojприводиткконфликтам,которыеневозоое РазфайлыXcode-проектатакиепроблемные,топорабыихудалитьипрописатьв.gitignore。 Нетпроекта–нетпроблем! Акактогдадолжнобыть? Намноголучшеиметьотдельныйфайлдлянастроекпроектасболееудобнымдляредактированияформатомивозможностьюуказатьпапку,иерархияфайловвкоторойиявляласьбыиерархиейисходников。 Ноневсетакпросто:Xcodeничегонезнаетоструктуретакогопроекта,и,соответственно,несможет。 在CocoaPods和Fastlane上创建project.pbxproj 。 Поэтомувыхододин–генерироватьэфемерныйXcode-проектисключительнонавремяразработкиисборки。 Ксчастью,естьготовыерешения,которыекакразудовлетворяютэтимтребованиям:XcodeGen, 结构,Xcake。 Самымпопулярнымсрединих,GitHub的судяпорейтингу, XcodeGen ,евомыиразберемнапримере。 XcodeGen吗? XcodeGen – XcodeGen –Xcode-проектаинструменткоманднойстроки, xcodegen生成 Котораяпринимаетследующиепараметры: –spec :опциональныйпутькфайлуспецификациипроекта。 По-умолчаниюиспользуетсяproject.yml。 –project :опциональныйпутькпапке,вкоторойбудетсгенерированпроект。 По-умолчаниюиспользуетсяпапка,在которойнаходитсяспецификация。 –use-cache :флагиспользованиякэшадляпредотвращениягенерациипроектавслучае,еслиниси –cache-path :опциональныйпутькфайлукэша。 По-умолчаниюиспользуется〜 ~/.xcodegen/cache/{PROJECT_SPEC_PATH_HASH} 。 Чтотакоеспецификация? Спецификация–этодокумент,вкоторомописанывсепараметрыпроекта:конфигурации,настройкисбор。 XcodeGen的XAML代码:YAML和JSON。 YAMLЛучшевыбратьпонесколькимпричинам: XcodeGen的XcodeGen或используетсяипримерахспецификаций используетсявомножестведругихинструментовiOS-разработки(SwiftLint,Jazzy,TravisCI,CircleCI,Codecovит.д.)。 […]

将Fastlane集成到iOS项目:第4课

上一课,我们使用get_certificates和get_provisioning_profile action为我们的iOS应用程序下载证书和配置文件。 这次,我们将使用另一个action来生成.ipa,并将其上传到Crashlytics和Hockey App。 在接下来的课程中,我将假设您的项目名为Bookshop。 创建构建 如下所示将build_app action添加到build_app的通道中。 在此之前,我将在项目中创建一个名为Adhoc的新配置。 使用连接的电缆将应用程序构建到iDevice时使用Debug 。 通过OTA(空中服务)分发应用程序时使用AdHoc ,例如Crashlytics和Hockey App。 Release上传到TestFlight和App Store时使用Release 。 创建配置后,我们还需要更新方案。 创建或更新项目方案,将“ Run ,“ Test以Debug ,“ Profile ,“ Analyze和Archive为Adhoc 。 (将在下一课中创建发布)。 我将该方案命名为Bookshop_dev_adhoc 。 如果您具有多个环境和项目配置,那将更容易理解。 之后,更新fastfile的lane 。 车道:build_app做 //从Apple Developer获得生产证书 get_certificates( 发展:错误, 强制:false, 用户名:, team_name:, 文件名:, output_path:“ fastlane_delivery / dev / adhoc /” ) //从Apple Developer获得生产证书 get_provisioning_profile( 即席:是的, app_identifier:, […]

XCode iOS升级了–第2部分

“在节目主持人联合会上,司法保护法庭不予受理。” MacOS可以在Mac OS上使用通用工具,而Mac OS可以在Mac OS上使用任何其他工具。 Hablemos de manerarápidaque es PlayGround:苹果游戏区“游乐场” con fin de queniñosy desarrolladores初中aprendan la sintaxis del lenguaje Swift sin ser abrumados por interfacegráficaque cese las ganas de aguider,porque sinceramente condo档案故事板salgan algunos cuantos错误,fin,游乐场,惯性,惯性,我从专业人士那里获得经验,编程,ejemplo:declaraciones,funciones yimpresiónde resultados,sinmásasíes como los ingenieros de apple supusieron Playgrounds,un patio de juegos con esteroides y de verdad yaveránpor que es que […]

教程:使用RapidAPI和Swift。

只需一个小时即可创建一个基本的天气应用。 本文是“ 带Swift的天气聊天机器人应用程序 ” 这三篇文章系列的第一篇。 最终建议将结合两个强大的Web服务(如RapidAPI和Dialogflow)在iOS上创建您的第一个聊天机器人。 去年五月,Mashape将他们的API Marketplace与RapidApi合并,现在是开发人员最大的API逍遥游集合。 那时RapidAPI尚没有合适的SDK来进行快速处理。 在本文中,我们将看到如何结合 Alamofire和Promise来获取数据并在对象中序列化。 如您所见,这是一个非常简单的应用程序,但是建议是学习轻松使用API​​ Marketplace。 我们正在使用什么: 斯威夫特4 天气预报API:RapidAPI 第三方库:Cocoa Pods(HTTP请求和Promise)。 让我们说明一下,在创建天气应用之前,我们需要做一些快速的事情: 1.1在Xcode上创建一个新项目。 打开Xcode,然后单击文件>新建>项目。 选择单视图应用程序作为模板,然后单击下一步,然后根据需要命名项目(在我的情况下为WeatherBasicApp)。 1.2安装CocoaPods。 现在,我们需要设置CocoaPods来管理Xcode项目的库依赖关系。 如果您以前从未使用过它: https://guides.cocoapods.org/using/getting-started.html 现在您的环境应该已经准备好了,我们需要在根文件夹中添加Podfile。 现在,我们必须将天气端点连接到我们的应用程序。 返回首页并搜索“ 天气 ”,然后单击第一个。 现在,在最后一个天气数据的端点列表中,单击“连接到端点”。 此时,我们必须选择正确的项目“ weatherbasicapp”,并为标题请求和url端点记录X-Mashape-Key和X-Mashape-Host。 那很简单。 🐵 好的,伙计们,我们已经配置了Xcode项目,可以使用RapidAPI端点了,现在该编写一些代码了! 😎 我们必须创建一个用GPS坐标和拖曳方法初始化的对象请求,以获取标头和主体参数。 在上一步中,我们注意到了X-Mashape-Key和X-Mashape-Host 。 我们正在使用这些参数来创建标题。 另外,我们需要创建一个身体参数: latitude和经度 。 感谢Murathan Biliktu的iPhone X样机 UI和情节提要非常简单,但是如果需要,您可以在我的GitHub上找到源代码以及其余代码。 在Github上查看示例源代码。 教程:使用AI和Swift 4。 在iOS上建立自然而丰富的对话体验。 如果您喜欢这篇文章,请推荐并分享。

将Fastlane集成到iOS项目:第5课

上一课,我们演示了如何构建应用程序并将ipa,dSYM上载到Crashlytics和Hockey App。 这次,我们将使用.env文件处理多个环境。 基本上,有两种方法可以配置环境值。 通过使用其他通道交付应用 车道:build_app_dev做 get_certificates( // … ) get_provisioning_profile( // … )build_app( // … )crashlytics( // … ) upload_symbols_to_crashlytics( // … 曲棍球 // … ) endlane:build_app_testing做 //复制build_app_dev内部的动作并更新值 结束 之后,您可以运行bundle exec fastlane ios build_app_dev和bundle exec fastlane ios build_app_testing通过不同的环境设置来构建应用程序。 此方法更为严格,仅创建另一个通道并在其他通道中指定值。 如果使用此方法,则有几个缺点。 降低Fastfile可读性,您很难阅读lane确切功能和流程 容易出错,因为您需要更新lane内的所有parameters或action 越来越长的代码…。 Fastlane确实理解了这个问题,它引入了.env文件来处理该问题。 创建您的项目环境文件 转到//fastlane 创建通用的env文件,名为.env 创建环境指定的文件,名为.env__ ,例如。 env.dev_adhoc和env.testing_adhoc .env –用于放置共享环境文件 .env.dev_adhoc –用于将开发环境值与Xcode […]

在Xcode 10中使用代码段

每次要实现功能时,您是否厌倦了编写或复制/粘贴大量代码😩? 您是否希望有一种方法可以通过键入一个关键字轻松地调用代码? 如果是这样,那么您很幸运! 因为Xcode具有一个称为代码段的强大功能! 它节省了您大量的时间和精力,而且您像专家一样编码!coding 2-在下一个窗口中,您可以编辑代码和/或以自己喜欢的方式自定义代码。 标题:您的摘录名称 摘要:它是做什么的? 平台: IOS,Mac OS,TV OS…。 语言:当然可以! 🙂 (或目标c) 完成捷径:输入以下字母即可使用您的代码段… 完成范围 :您想在哪里查看代码?(仅在函数,类或其他任何地方!) 而已! 您现在只能通过输入完成范围中的字母来使用代码段。 但是等等 您可以使用占位符来使代码段更加高效。 使用您要用作占位符的关键字并将其放在这些字符之间 结果如下: 而已! 现在您可以在项目中使用它们,尽情享受吧!😊