Tag: rubymotion

使用RubyMotion搜索Apple Music(第2部分)

在第1部分中,我们添加了通过Apple Music播放歌曲的功能(希望您喜欢它!),但是曲目ID是硬编码的。 在本期中,我们将创建一个搜索界面,让您搜索自己要播放的音乐。 我们将从为搜索界面添加新的视图控制器开始。 使用此代码创建一个新文件search_controller.rb 。 类SearchController < UITableViewController def viewDidLoad 超 自我 .title = ‘搜索’ 结束 结束 我们将从PlayerController创建SearchController的实例,然后在导航栏中添加一个按钮。 我们现在可以摆脱硬编码的曲目ID,因为我们将找到自己的曲目以尽快播放。 def viewDidLoad 超 @player = 玩家 。 新 @search_controller = SearchController 。 新 自我 .title = ‘MusicApp’ 自我 .view.backgroundColor = UIColor .whiteColor 自我 。 addSubview create_play_button 自我 .navigationItem.rightBarButtonItem = create_search_button 结束 def create_search_button @search_button = […]

录音— RubyMotion

最初于 2014年8月5日 发布在 polyglotconsultant.blogspot.com 上。 AVAudioRecorder类在我们的应用程序中提供了录音功能。 它记录通过内置麦克风或连接的耳机传来的音频。 我们可以录制音频,直到用户停止录制为止。 记录给定的时间,也可以暂停和记录。 我们可以实现委托方法来处理录音机中断,音频解码错误和录音完成。 initWithURL()用于初始化AVAudioRecorder类的对象。 这将接受文件的URL,设置哈希值和错误指针以存储错误代码(如果在对象初始化期间全部引发错误代码)。 网址: 这将保存要记录的文件系统位置。 从文件扩展名开始,它将采用录制格式。 recording_url = NSURL.fileURLWithPath(App.documents_path +“ /record.caf”) 设置: 这将具有记录所需的配置,例如采样率,比特率,比特深度和转换质量。 使用AV Foundation音频设置常量中描述的设置键。 configs = {AVFormatIDKey => KAudioFormatLinearPCM,AVNumberOfChannelsKey => 2,AVEncoderBitRateKey => 16,AVEncoderAudioQualityKey => AVAudioQualityMax.to_i,AVSampleRateKey => 44100,AVLinearPCMIsBigEndianKey => 0,AVLinearPCMIsFloatKey => 0 错误: 这是指向NSError的指针。 那将参考错误描述。 err_ptr = Pointer.new(:object) 录音机初始化示例如下 @recorder = AVAudioRecorder.alloc.initWithURL recording_url,设置:配置,错误:err_ptr 录制之前,必须将AVAudioSession设置为录制。 错误= Pointer.new(:object)#配置音频会话sessionInstance […]

RedPotion入门可加快iOS开发

在上一教程中,我向您介绍了用于构建iOS应用程序的RubyMotion。 RubyMotion还支持其他平台,包括Android,但是在本教程中,我们将继续学习iOS开发。 本教程将向您介绍一个名为RedPotion的框架,该框架将大大改善您的iOS开发体验。 在本教程中,我们将开始构建一个利用表格屏幕显示事件列表的应用程序,特别是Calagator.org中的事件。 什么是RedPotion? 我喜欢将RedPotion视为“ iOS开发的轨道”。 它是RubyMotion的一些最佳工具的集合,提供了简单,直观的API和DSL工具包,可完成常见任务并减少通常在iOS应用中编写的样板代码的数量。 RedPotion用直观的术语和简单的方法名称抽象了许多iOS特定的术语和详细的方法名称。 例如,iOS应用程序将具有以下方法: 应用程序:didFinishLaunchingWithOptions: applicationDidBecomeActive: tableView:cellForRowAtIndexPath: 在RedPotion中,这些相同的方法可以定义为: 负载 on_activate table_data 这只是RedPotion使iOS开发更简单的许多方式中的几个示例,更像您作为Ruby开发人员所习惯的那样。 要了解有关RedPotion的更多信息,请访问文档:http://docs.redpotion.org/en/latest/ RedPotion入门 要开始使用RedPotion,您需要安装gem: 创建画面 在iOS中,UIViewControllers负责协调您在屏幕上看到的内容。 在RedPotion中,这些屏幕称为“好”屏幕。 RedPotion提供了许多不同的屏幕类,以帮助您避免构建这些公共屏幕所需的样板代码。 其中一些示例包括表格,导航栏,标签栏,地图,网页屏幕等等。 让我们从创建一个显示事件的表格屏幕开始。 为此,我们将使用RedPotion命令行生成器。 如果您遇到任何问题,请随时发表评论或在Slack中找到我们。 我们将继续扩展此应用程序,并在以后的教程中探索更多主题。 您可以在GitHub上找到我们Calagator应用程序的源代码。

使用Ruby简化移动应用程序开发– Dave Trollope

使用Ruby简化移动应用开发 去年春天,我有个主意,为什么没有一个应用程序可以跟踪轮到谁来支付咖啡/午餐/早餐等费用。结果,有几个旧应用程序,但这对我来说是一个很好的机会尝试回到应用程序开发中,我几年前就尝试过,但从未发布过任何东西。 我对RubyMotion也很感兴趣,并且已经开发了很长时间的Ruby,想了解它如何作为移动应用程序工作。 您不知道可以用Ruby编写移动应用程序吗? 就像Web应用程序一样有趣! 因此,我开始了构建现在位于应用商店中的应用的旅程。 版本1是一个非常简单的基于表的列表,由于可用的包装iOS API(ProMotion)的有用宝石,因此花了不到两周的时间来开发。 我希望该应用程序更美观,因此我开始使用版本2,这是挑战变得更加困难的地方。 我对使用RubyMotion感到非常高兴-挑战主要在于了解iOS API。 对于版本2,我为主页创建了一个自定义iOS视图,并基于RubyMotion示例之一创建了该视图。 它可能仍然漂亮,但比桌子更具吸引力! 当您不完全熟悉iOS生态系统时,将iOS API映射到ruby是我最大的挑战,但是毫无疑问,无论我使用哪种语言,我都会在很大程度上获得学习曲线-尽管Objective-C和Swift在网上有更多示例从。 RubyMotion将ruby编译为静态本机代码,因此常规的ruby gem在RubyMotion中不起作用。 我发现这并不是一个沉重的负担-有很多宝石可以移植功能或以其他方式进行操作。 可以预料,在完全不同的生态系统中运行时,有关此问题的文档很多。 调试可能会遇到一些挑战,因为有时(针对最棘手的问题)有时需要诉诸LLDB而不是RubyMotion REPL,但是REPL对于大多数问题超级有用,因为它允许您在运行iOS模拟器时检查进程状态该应用程序,太好了! 希望人们在App Store上找到该应用程序,开始使用它并向我提供反馈,这真是令人称奇。最大的请求之一是历史跟踪,由于红宝石,这非常容易! 将来,该功能将扩展为支持付款跟踪,这是另一个非常需要的功能。 我即将发布我的第一个应用程序内购买实现,它将实现支持设备对等同步的PRO版本(以上屏幕截图来自预发布)。 我还计划在Android上发布该应用程序的版本,因为RubyMotion也支持Android,WatchOS和OSX。 有一些实现跨平台支持的瑰宝,因此您不需要了解所有本机API(例如,EG Flow),尽管我并非以此为起点,所以我将不得不决定在为每个生态系统学习API还是切换瑰宝之间做出决定-以及重新创建我的自定义视图将变得多么容易。 另一天的挑战。 另外,我也想给JetBrains的人们一个叫喊声-我在整个开发过程中都使用了RubyMine,我真的很喜欢他们的开发平台。 他们也支持RubyMotion,尽管我实际上没有在该配置中设置…。 我很快也会再来的! 总体而言,RubyMotion在无需学习另一种语言的情况下使我轻松进入应用程序世界提供了极大的帮助,我非常感激能将其包含在我的工具带中!

RubyMotion iOS开发入门

什么是RubyMotion? RubyMotion是一个工具链,可让您使用类似于Ruby的语法编写iOS,Android,OSX,Apple Watch和AppleTV的真正本机应用程序。 它不是编译器(将您的代码转换为Objective-C)。 应用程序的静态编译方式与Objective-C或Swift编译为本地代码的方式相同。 RubyMotion本质上是Ruby的新实现,旨在用于构建移动应用程序。 为什么要使用RubyMotion? 使用RubyMotion的主要好处之一是,您无需学习新语言即可开始构建移动应用程序。 您将使用已经熟悉的Ruby语言。 如果您还不熟悉Ruby,那么您会发现Ruby比Objective-C,Swift或Java更容易读写。 实际上,您将最终了解一些有关Objective-C的知识,以便翻译一些示例或文档。 第二个好处是能够构建跨平台应用程序。 通过消除语言差异,RubyMotion可以允许您在同一代码库中编写同时支持iOS和Android的单个应用程序。 实际上,在单个代码库中构建跨平台应用程序依赖于使用某种框架来抽象特定于平台的用户界面之间的差异。 幸运的是,已经有一些伟大的框架在这​​一领域取得了进展。 无论如何,由于通用语言,仍然有机会重用代码。 安装RubyMotion 应当注意,RubyMotion仅在Mac上运行。 这是因为RubyMotion仍需要访问Apple库和构建工具才能编译您的应用程序并运行iOS模拟器。 您还需要确保已安装Xcode。 安装Xcode后,打开Xcode>首选项,单击“下载”选项卡,然后安装iOS SDK 9.2。 要开始使用RubyMotion,您首先需要注册许可证并下载安装程序。 访问RubyMotion下载页面,然后选择以下计划: 免费 (“入门”)—非常适合尝试RubyMotion。 您甚至可以将应用程序发布到App Store,但是您的启动图像将显示一条消息,说明它是“由RubyMotion制成”。 另请注意,免费计划仅支持iOS和Android的最新版本。 独立 ($ 199 /年)—如果您打算进行任何类型的专业开发,您可能会想要这个。 支持仅限于社区论坛(以及我们的社区Slack频道)。 专业 ($ 499 /年)—如果您需要优先支持,这是您的计划。 注册计划后,您将收到一封电子邮件,其中包含许可证密钥和下载安装程序的链接。 生成您的第一个应用 现在您已经安装了RubyMotion,让我们生成您的第一个应用程序。 打开您的终端机应用程序。 请注意,本教程是使用RubyMotion 4.8编写的。 如果您没有看到模拟器弹出窗口,那么该是找出问题原因的时候了。 我可能忘了解释一步。 您可以在以下几个地方寻求帮助: 在RubyMotion社区论坛中搜索答案。 在我们的RubyMotion Slack频道中寻求帮助。 在下面的评论中发布您的问题。 假设您已经做到了这一点,那么您已经解决了开发RubyMotion应用程序所需的所有系统配置和依赖项。 接下来,让我们快速看一下app_delegate.rb文件。 这是您的iOS应用程序的入口。 […]

Swift for Ruby Devs:基础知识pt。 2

在上一篇文章中,Swift for Ruby Devs:The Basics pt。 参见图1,我们研究了最基本的数据类型在Swift和Ruby之间的语法差异。 我们介绍了变量和常量,字符串,整数和浮点数,运算符以及集合类型,例如数组和哈希(在Swift中称为字典)。 在了解了这些基本数据类型之后,我们将研究如何在Swift中编写控制流结构,以及它们在Ruby中的不同之处。 我们还将学习Swift中的方法,结构和类。 控制流程结构 循环和迭代器 在Swift中,有很多不同的机制可以遍历数组,字典,字符串,范围和其他序列。 尽管语法可能有些不同,但它们在大多数编程语言中都很常见。 如果您是Ruby / Rails开发人员,则应该已经熟悉这些内容,尤其是如果您之前编写过一些Javascript。 在大多数编程语言中,“ for-in”循环很常见。 即使Ruby也会实现它,尽管我们更喜欢其他迭代方法来编写更多惯用的Ruby。 #红宝石 #数组 生物= [“尼斯湖怪兽”,“萨斯喀彻奇”,“唐纳德·特朗普”] 对于生物中的生物 输入“您好,我叫#{creature}。” 结束 #哈希 生物= {狗:“汪汪”,猫:“喵”,donald_trump:“拥抱!”} 对于钥匙,生物的价值 放置“#{key}和#{value}” 结束 如果您以前编写过Javascript,那么您已经熟悉使用花括号打开和关闭函数,类,控制流语句等。 在Swift中也是如此,这是将Swift的语法与Ruby的语法进行比较时会注意到的主要区别之一。 //迅捷 //数组 让生物= [“尼斯湖怪兽”,“萨斯喀彻奇”,“唐纳德·特朗普”] 对于生物中的生物{ 打印(“你好,我叫\(生物)。”) } //字典 让动物= [“狗”:“ woof”,“猫”:“喵”,“唐纳德·特朗普”:“呵呵!”] 为生物中的(键,值){ 打印(“ \(键)和\(值)”) } 值得一提的是,Swift中的字典是按照相反的顺序进行迭代的,而Ruby中的哈希是从哈希中定义的第一个键值对进行迭代的。 如果您使用的是哈希/字典,那么您可能不在乎事物的顺序。 但是,在编写惯用的Ruby时,在遍历数组或哈希执行某些任务时,我们更喜欢使用“ each”,“ map”,“ […]

RubyMotion重新加载UITableView的部分

我怎样才能重新加载一个表的特定部分? [self.tableView reloadSections:[NSIndexSet indexSetWithIndex:indexPath.section] withRowAnimation:UITableViewRowAnimationFade] 我怎么能用ruby的语法来写这样的东西呢?

iOS推送通知应用程序不要求注册许可

我正在开发一个需要启用推送通知的应用程序。 我已经按照这篇文章工作,直到我下载configuration文件。 我使用Rubymotion来开发这个应用程序,因此在我的Rakefile中我做到了这一点, app.name = 'Myapp' app.identifier = 'com.myapp.development' app.provisioning_profile = '/Users/sunilkumar/Library/MobileDevice/Provisioning Profiles/Myapp_Development.mobileprovision' “我的应用程序”是我的应用程序的名称。 标识符是项目标识符(根据Rubymotion文档以及我相信的是bundle标识符),我将其默认值重写为使其与我在IOS开发中心创build的App ID相同。 在我的app_delegate.rb中,我也有这段代码, UIApplication.sharedApplication.registerForRemoteNotificationTypes(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound) 问题是,当设备连接并安装应用程序时,不会询问推送通知的权限。 我想我已经做了几乎所有的事情,正如我上面链接的文章,但不知何故,似乎并没有工作。 任何帮助,将不胜感激。

通过RubyMotion在UILabel中使用unicode字符

我试图使用Unicode私有空间字符并将其设置为UILabel的text属性。 这是使用RubyMotion。 我想要的angular色是Entypo家族的一部分,是U+1F554 ( 🕔 )。 我创build一个新的UILabel : @lblIcon = UILabel.alloc.initWithFrame([[0,(self.view.frame.size.height/2) – 128],[self.view.frame.size.width,96]]) 并使用pack语法将其文本设置为Unicode字符。 @lblIcon.text = [0x1f554].pack('U*') 然后,我应用图标字体并将其添加到视图中: ico_font = UIFont.fontWithName("Entypo", size:48) @lblIcon.font = ico_font self.view.addSubview @lblIcon 当我运行rake并尝试启动应用程序时,出现以下消息: *** Terminating app due to uncaught exception 'RuntimeError', reason: 'ui_label.rb:16:in `font=:': NSInvalidArgumentException: NSConcreteMutableAttributedString addAttribute:value:range:: nil value (RuntimeError) 我也试过了 @lblIcon.text = [0x1f554].pack('U*') + "" 和 @lblIcon.text = "\U1F554" […]

如何设置iOS UITextField边框颜色? (RubyMotion + iOS)

如何使用RubyMotion设置textField边框颜色? 示例代码: textField = UITextField.alloc.init textField.borderStyle = UITextBorderStyleLine 边框颜色显示为Apple默认颜色; 我希望它是红色的。 这是使用RubyMotion,而不是Objective-C