Tag: xcode

使用AVFoundation录制和播放音频

大家好! 过了一分钟,但我想分享我正在使用的应用程序的一部分,该应用程序利用了苹果的AVFoundation框架。 该应用程序的功能类似于MPC Player,通常称为鼓机。 该应用程序上的按钮将对应于不同的录音,这些录音是使用iPhone的麦克风捕获的。 最终的结果是一个数字节拍器,能够录制和播放人声以及各种其他声音! 为了实现这个目标,我开始熟悉Apple的AVFoundation。 顾名思义,这是Apple为该应用程序的音频和视频组件奠定基础的框架。 这包括用于视频播放的AVPlayer以及用于与音频相关的所有内容的AVAudio。 AVAudio可以一次或同时播放各种音频文件,还可以控制所有参数,例如播放级别,立体声定位,倒带和快进,甚至可以从播放级别的计量中获取数据。 此外,AVAudioPlayer带有一系列音频效果,包括混响,延迟,失真,EQ,音高控制和CoreMIDI功能。 凭借苹果公司开发强大的数字音频工作站(DAW)(例如GarageBand和Logic)的经验,我很高兴看到内置Swift框架必须提供的功能! 但是,让我们不要超越自己。 第一步:录制音频。 为此,我们需要将AVAudio导入到Xcode项目中,使ViewController符合几个协议,并创建以下变量: 不必担心初始化,我们将在配置音频的以下函数中进行初始化。 本质上,它将要做的是创建一个文件路径和名称来存储音频,创建一个音频设置字典,并执行Do-Try-Catch初始化我们的audioRecorder变量。 您可以在viewDidLoad()中调用此函数,代码如下: 接下来,我们需要一个函数来检索特定URL路径上的文件,然后通过audioPlayer播放该文件。 让我们调用第一个getFileURL()-> URL,并在设置我们的audioPlayer的下一个参数中调用它。 每次我们要播放audioPlayer时,都会调用此函数。 最后,我们需要设置一对按钮,以便在点击时调用这些功能,一个按钮进行录制,另一个按钮进行播放。 为了确保这两个功能不重叠,我在这些按钮上设置了标签,以便如果音频已经在录制或播放中,则在下一次点击时将停止 就是这样! 在您的计算机上尝试一下; 如果您按下“录音”按钮,则录音应保存到特定的音频路径,然后在按下“播放”按钮后将调用该音频路径进行播放。 对我来说,下一步是添加多个路径来录制多个按钮的音频,并尝试添加诸如混响,延迟和音高变化等效果,以便可以雕刻和丰富简单的录音以模仿深沉的低音或清晰的声音。小鼓在一个开放的大厅里。 Ray Wenderlich还提供了这个引人入胜的AudioKit教程,阐明了Swift的振荡器和声音合成功能。 显然,Swift内置了一套技术插件和框架,供有音乐爱好的开发人员使用,我期待探索这些工具并与社区分享。 编码愉快!

使用工具链在Xcode中切换Swift版本

原始文章发布在XCBlog上 毫无疑问,Swift是开发iOS应用程序的出色编程语言。 但是,由于Apple已将Swift开源,因此它正在经历重大的重大变化。 Swift每天都在发展,但我们必须确保我们的应用程序或库仍可在不断变化的Swift中工作。 苹果一直都在用新版本的Swift发行新的Xcode版本,这通常要求iOS开发人员切换Xcode版本或同时保留多个版本的Xcode。 在本文中,我们将看到如何在多个Swift版本之间切换而不更改Xcode版本。 Xcode和Swift 在进入更改Swift版本之前,让我们先谈谈Xcode和Swift版本是如何相互关联的。 Xcode的新版本始终具有Swift的最新稳定版本,例如Swift 4.1随附的Xcode 9.3。 我们总是可以在发行说明中找到带有Xcode的Swift版本。 默认情况下,位于/Applications/Xcode.app/Contents/Developer/的Xcode开发人员目录。 但是,如果安装了多个Xcode版本,则可以使用xcode-select实用工具切换Xcode开发人员目录。 例如,对于beta版本,我们可以使用切换到beta Xcode $ sudo xcode-select —切换/Applications/Xcode-beta.app/ $ export TOOLCHAINS = swift 检查当前使用哪个Swift版本也很重要。 我们可以检查Swift版本,只需运行以下命令即可。 $ swift-版本 Apple Swift版本4.1(swiftlang-902.0.48 clang-902.0.37.1) 目标:x86_64-apple-darwin17.5.0 这将打印最近Xcode版本正在使用的Swift的现有版本。 我们可以使用以下命令检查Swift二进制文件的位置。 $ xcrun -f swift /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift 如果我们还有其他Swift版本可用,则Xcode可以通过Xcode目标的build设置选项卡中的build设置$ SWIFT_VERSION使用不同版本的Swift。 我们可以从终端使用以下命令快速扫描构建设置。 $ xcodebuild -showBuildSettings | grep SWIFT_VERSION 这将打印当前Xcode项目中正在使用的当前版本。 请注意,此命令必须从iOS项目的根目录运行。 获取新的Swift工具链 由于Swift是开源的,因此所有更新的活动开发都发布在swift.org网站上。 Swift的最新快照始终可以从此处的网站下载。 我们必须从那里在本地macOS机器上下载Swift快照,然后才能使用它。 […]

iOS中附件视图的动态高度

大家好! 我希望你们都做得很好,所以很长一段时间以后,我将开始写一个关于附件视图的博客。 如果您熟悉附件视图的概念,则可以跳过介绍性部分,直接跳至实现它的实际部分;如果您已经在聊天应用程序中实现过它,则可以再次进行以下操作。出来。 介绍: 我认为大家都在使用Whatsapp或Facebook Messenger等聊天应用程序。 因此,毫无疑问,您已经看到了Accessory视图,但可能不知道 如果您使用诸如Whatsapp和Facebook Messenger之类的IM应用程序,则可能已经看到了Accessory视图,尽管您可能并不知道它被称为。 因此,在大多数情况下,IM应用程序中的附件视图就是您编写消息以将其发送给您的联系人的区域。 技术观点: 将自定义视图附加到系统提供的输入视图,即键盘是附件视图。 进行聊天应用程序输入的另一种方法是将视图放置在视图控制器的底部,并将其底部约束更改为键盘的高度,这不是实现聊天UI的好方法。 让我们深入一些实用的食谱recipe 因此,众所周知,首先创建Xcode项目。 为其命名,并为其指定一个很好的Bundle标识符。 之后,使用GrowingTextView库,它将提供一些帮助来自动给出textView中文本的高度值。 如果知道CocoaPods { 吊舱“ GrowingTextView” }其他{ //链接:https://cocoapods.org/ } 现在,在viewController内部插入一个tableview,如下图所示: 现在,创建一个UIView类型的新文件(.xib文件)并将其命名为ChatAccessory 并选择xib视图并转到属性检查器,并将其大小更改为自由格式,以便您可以根据需要更改其大小。 现在像在Whatsapp或Facebook中那样设计用于输入文本的视图以发送消息。 我将设计一个简单的设计,如下所示: 在ChatAccessory视图内拖动一个textview,并给它一个自定义的GrowingTextView类。 然后拖放UIButton并将约束应用于按钮,例如 尾随= 0,底部= 0,高度= 56(请勿将顶部约束应用于视图) 然后将约束应用于textview,例如前导= 16,底部= 8,顶部= 8以及尾随空格到UIButton为8 然后,我们必须通过属性检查器为textview设置最小和最大高度。 提供按钮高度= 56 =附件的最小高度 文字检视最小值 高度= 56-(textview的顶部约束+ textview的底部约束) 文字检视最小值 高度= 56-(8 + 8)= 40 最高textview 高度= […]

Xcode 8.3 ・ Swift 3.1正式版早速アップデートしました

本日3月28日,Appleの各种OSおよびXcodeの正式アップデートが来たので,早速Xcode 8.3 ・ Swift 3.1にアップデートしてみました。スクショの通り,入れているXcodeは8.3のみで,スッキリです( ´・‿・`) 现在提供新下载–新闻和更新– Apple Developer 获取有关一系列开发,App Store和Mac App Store主题的更新,提示和操作方法信息。 developer.apple.com Mac App Store上的Xcode 阅读评论,比较客户评分,查看屏幕截图,并了解有关Xcode的更多信息。 下载Mac OS X 10.12的Xcode… itunes.apple.com ついでに,こういう改善もセットでなされました: Apple App Store Qiのレビューに対して返信できるようになりました🎉– Qiita ドキュメイトル通りで,详しくはこちらのApple公式ドキュメントに载っています:App Store上的监控评论 Swift 3.1の変更については,少し前の记事ですが,以下にまとめた内容と大差ありません。 Swift 3.1のリリースプロセスおよびそれに含まれる変更内容の绍介(前编) Build Insiderオピニオン:小野将之(5)。Swift3.1のリリースが2017年春に迫ってきた。版のSwiftを利用する… www.buildinsider.net Swift 3.1のリリースプロセスおよびそれに含まれる変更内容の绍介(后编) SwiftリポジトリのCHANGELOGとSwift Evolutionリポジトリの提案状态を见ると,Swift 3.1の开発状况が分かる。以下では12月20日时点で最新の开发… www.buildinsider.net 个人的には,こちらのジェネリクスの制限缓和が嬉しいです(・‿・`) [SR-1009]将方法添加到包含特定类型的数组– Swift 例如,如果我想激活约束内的约束:[NSLayoutConstraint],而不是编写… bugs.swift.org 公式记事も上がっています: Swift 3.1发布! Swift 3.1现已正式发布! Swift […]

iOS-您的实际住址是什么?

如果您问与IT无关的人,“您的实际地址是什么?”,他们可能会告诉您他们房屋的地址。 但是,在本文中,我们将讨论本地网络上的MAC地址以及如何使用iOS检索它们。 ARP表和API 因此,当我意识到Apple没有为我们提供访问iOS设备的ARP(地址解析协议)表的API时,我正在尝试为我的项目(IT Buddy)开发网络扫描仪。 在Google和StackOverflow上花费了大量时间后,我想出了自己的完整解决方案,希望与您分享。 获取必要的文件 首先,您需要将Mac OS X中的某些文件复制到Xcode项目中。 转到/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/include (其中MacOSX10.11.sdk是您的Mac OS版本,例如MacOSX10.10。 sdk)。 然后从“ net”文件夹中将 n拖放route.h,if_arp.h,if_types.h并将if_ether.h从“ netinet”文件夹中拖放到您的Xcode项目中。 选择“ 根据需要复制项目 ”。 现在我们需要编辑“ if_ether.h ”。 找到该行“ #include ”,并将其替换为“ #include“ if_arp.h” ” 然后导入MacFinder.h: 和MacFinder.m: 使用MacFinder 将MacFinder.h导入控制器后,您可以使用以下代码获取网络中任何IP的MAC地址: NSString * mac = [MacFinder ip2mac:” 192.168.10.24“]; NSLog(@“ Mac:%@”,mac); 如果您在文件或实现方面遇到问题,可以在此处下载完整的项目。

新的Fastlane插件可使用altool上传iOS二进制文件

最初在XCBlog上发布 。 阅读原始文章以获得更好的图形 苹果不希望我们出于任何原因启用连续部署。 没有用于处理iTunes Connects的API,Apple仍然希望批准您的应用程序。 苹果自己的持续集成服务器(又称Xcode服务器)不允许我们将IPA文件上传到iTunes Connect。 存档过程会创建一个ipa文件,但会在那里停止。 我们仍然需要依靠Fastlane或手动过程将内部版本上传到iTunes connect。 在上一篇博客文章中,我们已经看到了将iOS二进制文件上传到iTunes Connect的五种方法。 在本文中,我们将介绍我编写的Fastlane插件altool,以使用altool将iOS二进制文件上传到iTunes Connect。 您可以在Github上找到该插件的详细信息。 为什么我写了这个插件 Fastlane解决了使用传递和试用之类的工具将iOS二进制文件上传到iTunes Connect的问题,以便我们可以编写与iTunes Connect交互的脚本。 但是,Fastlane使用iTMSTrasporter工具上传二进制文件并处理iTunes Connect,这是一个棘手且漫长的过程。 GitHub上有一个问题来讨论在iTMSTransporter上使用altool的问题,但是作者决定使用iTMSTrasporter来交付工具。 altool是Application Loader的命令行界面,似乎比iTMSTrasporter更为流畅。 我们不需要显式安装此实用程序,它附带了最新的Xcode。 苹果在这里有altool的简要文档。 使用Fastlane,无需使用此工具,因此我认为编写插件很容易,这样我们就可以将二进制文件上传到iTunes connect。 如何使用altool插件 使用altool插件与使用其他插件一样容易。 首先,通过运行以下命令将其添加到您的项目中: fastlane add_plugin altool 此插件的唯一先决条件是必须安装Fastlane,此插件具有可配置的Apple ID和密码,但您可能不想在配置中编写该值。 您需要使用FASTLANE_USER和FASTLANE_PASSWORD环境变量设置进行Fastlane设置。 当您运行fastlane init时,Fastlane会询问它,但如果没有,则必须设置这些变量。 您可以轻松地为bash shell设置它 $ export FASTLANE_USER =“ your_apple_id@yourcompany.com”; $ export FASTLANE_PASSWORD =“ your_super_xecret_password”; 如果您不使用bash,也可以对外壳进行选择。此插件可用于使用Gym将生成的ipa文件上传到iTunes Connect。 安装后,我们可以使用以下配置参数轻松配置插件 […]

快车道

目前在用的:release desc“将新版本部署到App Store” 车道:release do crement_build_number #封存 体育馆(方案:“应用”) #提交 交付( 力量:是的, automatic_release:是的, ) crashlytics( api_token:“令牌”, build_secret:“秘密”, 组:[“ ALL”], 注意:“使用快速通道分发”, 通知:假 ) #获取版本和内部版本号 版本= get_version_number() build = get_build_number() 标签=版本+“ b” +版本 #提交 commit_version_bump(xcodeproj:“ ./app.xcodeproj”,force:true) #添加标签 add_git_tag(标签:标签) # 推 push_to_git_remote 结束 crement_build_number 要去建立设置设这两个例如:当前项目versino = 1跟Apple Generic 参考:使用agvtool自动版本和内部版本号

Xcode中的配置处理

通常,Xcode从两种配置开始。 调试和发布。 您将在项目的信息页面中找到它们。 您可以根据需要创建更多配置,例如Beta,Staging等。 您可以根据需要编辑这些配置(只需创建发行版或调试版的副本并适当地重命名)。 然后,您可以添加swift编译器标志,以便我们可以通过代码检查当前配置。 为此,转到项目(非目标) → 构建设置 → Swift编译器 → 自定义标志 s→ 其他快捷标志部分,然后编辑不同的配置标志。 使用语法“ -D ”添加标志。 注意:如果没有看到“ 其他swift标志”部分,则将进入基本的构建设置模式。 只需在下面的屏幕截图中选择“ 全部 ”即可。 现在,我们可以在代码中使用这些标志来检查当前配置,例如: 现在,要更改当前方案,请转到目标 → 编辑方案。 然后在“信息”选项卡下,单击并根据需要更改生成配置 。 假设如果发布和调试应用程序的常量不同,请遵循上述配置管理模式,这有助于最大程度地减少错误。 请享用!! 如果您喜欢阅读这篇文章,请分享并推荐它,以便其他人可以找到💚💚💚💚💚💚!!!!

第1集。 故事板

是2018年 新年快乐! 今年的目标是什么? 上体育馆,还是在奶酪上加些奶酪切奶酪? (来自Spotify广告的一个小玩笑) 我为什么要这样做? 我今年的主要目标是付出多于付出。 过去,我回顾了我的作品,发现macOS App Development视频教程对世界产生了一些影响。 我决定再次上课,并用新内容更新教程。 这就是为什么您看到第一篇文章。 我在做什么? 我将其作为实验和附带项目,我的主要工作是构建Sorted。 如果您发现任何拼写错误,发音错误或教学方法不正确,请随时告诉我。 我会尽力提高质量。 我是为谁干的? iOS开发人员或编程初学者。 我开始通过扩展Sorted以涵盖Mac平台来制作macOS应用。 我已经看到了两组主要的macOS开发人员。 他们要么是具有10多年经验的经验丰富的开发人员,要么是他们开始在iOS上工作,并希望将产品扩展到像我这样的macOS。 该系列专为正在转向macOS开发的iOS开发人员而设计。 同时,内容对于初学者也很容易理解。 我该怎么做? 我2018年的决议是付出多于付出。 我希望通过在YouTube上发布视频和在Medium上发布文章,希望使内容可以广泛地提供给大多数人。 如果在托管方面没有什么帮助,我愿意制作中文版本并与中国开发者社区共享。 每个星期天都有新剧集 … 免费。 我正在学习整个过程。 我相信最好的学习方法就是教书。 我鼓励您将您的想法发给我,如果您喜欢这些内容,请留下评论并鼓掌。 双赢 。 我还创建了一个索引页。 现在看起来有些空白,但是每周我都会在文章和视频中添加新链接。 作为这个新系列的第一集,让我们从一些基础知识开始。 故事板是我两年前制作的上个系列中观看次数最多的视频。 这也跳过了编码语法和语言版本的复杂性。 希望您喜欢这个短片。 源代码可以在这里找到。 下周见。 请按照此处的系列获得通知。 这些天在地球北边有点冷。 保暖。 对于那些在南部的人。 希望您周末愉快! 感谢收看! 😎 如果喜欢,请测试 5秒钟内 可以击打 👏多少次。 这是出色的 […]

Xcode用于快速Swift构建的新构建系统

注意:这篇文章最初是在XCBlog上发布的,请阅读原始文章以获得更好的图形,并且 这里 不会遗漏任何内容 Apple通过Xcode 9在WWDC 2017上宣布了新的构建系统。新的Xcode构建系统是完全从头开始编写的,完全是用Swift编写的。 但是,由于某些原因,默认情况下未启用它,并且可以将其用作预览。 苹果表示,他们将使其在更高版本的Xcode中成为默认设置。 这意味着我们将来必须毫无疑问地接受此构建系统。 在这篇简短的文章中,我们将看到如何使用Xcode New构建系统来加快iOS应用的Swift构建时间。 是。 他们称之为“ Xcode新构建系统”,他们想不出该构建系统的正确名称。 为了了解有关Xcode新构建系统的更多信息,请不要观看WWDC 2017会议“ Swift的新功能”,新发布的版本将在该会议上宣布。 这个人实际上只花了40秒钟来谈论新的构建系统,所以在那里没有什么可学的,相反,谷歌搜索它或继续阅读这篇文章。 Xcode 9+中提供了新的Xcode构建系统。 作为iOS工程师,您可能白天要按CMD + B或CMD + R数百次,并且长时间观看Xcode编译这些内容。 当前,Xcode默认使用“标准构建系统”,这在编译Swift项目时有点慢。 为了改善Swift项目的编译和构建时间,苹果推出了这种全新的“新构建系统”,有望在性能和依赖管理等领域取得进步。 根据Apple关于Xcode 9新增功能的文档,新的构建系统应该能够 提供更高的可靠性 捕获项目配置错误 提高整体构建性能 我们可以通过多种方式为iOS项目启用新的构建系统。 从Xcode本身启用新的构建系统是一个好主意,以便我们在开发应用程序时可以使用所有功能。 使用Xcode 9,启用新的构建设置非常容易。 您可能有Xcode项目或项目的Xcode工作区,在Xcode中, 选择File-> Project / Workspace Setting。 您将看到一个“构建系统”选项以选择新的构建系统,如下所示 启用此功能后,您应该会看到蓝色的锤子。 如果要使用xcodebuild从命令行构建iOS项目,那么我们必须传递附加参数-UseNewBuildSystem = YES还将强制使用新的构建系统。 如果您正在使用Fastlane Gym构建项目,那么我不确定该附加标记是否已在Gym中实现。 按照这种令人困惑的推文,苹果公司的工程经理负责管理新的构建系统项目。 我们还可以使用Xcode 9.2+中的标志启用新的构建系统 $默认写入com.apple.dt.Xcode BuildSystemScheduleInherentlyParallelCommandsExclusively -bool否 […]