标签: rubymotion

RubyMotion和指针

我是一个Objective-C菜鸟,已经搜索了高低不能找到答案:

在我的RubyMotion项目中,我有一个名为StatusGuage的UIView子类,它包含一个名为drawLinearGradient的方法,如下所示:

def drawLinearGradient(context, rect, startColor, endColor)
  colorspace = CGColorSpaceCreateDeviceRGB()
  locations = [0.0, 1.0]
  # colors = NSArray.arrayWithObjects(startColor, endColor, nil)
  # ptrColors = Pointer.new(:object, colors)
  colors = [startColor, endColor, nil]
  # CGGradientRef gradient = CGGradientCreateWithColors(colorSpace, (CFArrayRef) colors, locations);
  CGGradientCreateWithColors(colorspace, colors, locations)
end
Run Code Online (Sandbox Code Playgroud)

我想知道如何调用CGGradientCreateWithColors.它显然需要一个(CFArrayRef)指针,但我无法弄清楚如何传入它.我尝试过的迭代之一被注释掉了.

这是错误消息:

2012-05-11 16:57:36.331 HughesNetMeter[34906:17903] 
*** Terminating app due to uncaught exception 'TypeError', 
  reason: 'status_guage.rb:43:in `drawLinearGradient:': expected 
  instance of Pointer, got `[0.0, 1.0]' (Array) (TypeError)
    from status_guage.rb:13:in `drawRect:'
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助.

ruby ios rubymotion

6
推荐指数
1
解决办法
1875
查看次数

初始化ruby singleton

我正在尝试初始化ruby中的单例.这是一些代码:

class MyClass
  attr_accessor :var_i_want_to_init

  # singleton
  @@instance = MyClass.new
  def self.instance
    @@instance
  end

  def initialize # tried 1. initialize, 2. new, 3. self.initialize, 4. self.new
    puts "I'm being initialized!"
    @var_i_want_to_init = 2
  end
end
Run Code Online (Sandbox Code Playgroud)

问题是从不调用initialize,因此单例永远不会初始化.我尝试命名init方法initialize,self.initialize,new和self.new.没有任何效果."我正在初始化"从未打印过,变量从未在我实例化时初始化

my_var = MyClass.instance
Run Code Online (Sandbox Code Playgroud)

如何设置单例以使其初始化?帮助赞赏,

Pachun

ruby singleton initialization rubymotion

6
推荐指数
2
解决办法
1万
查看次数

在rubymotion中创建一个spec帮助器

我有一些常用的方法用于几个不同的规格,我想将它们提取到某个地方,如可以从所有规格访问的规范助手.有人知道怎么做吗?

specs rubymotion

6
推荐指数
1
解决办法
293
查看次数

如何在RubyMotion中创建字符串的md5哈希

我有一封电子邮件,想从gravatar.com中提取相应的图片

使用ruby,很容易:

    require 'Digest/md5'

    Digest::MD5.hexdigest("my string")
Run Code Online (Sandbox Code Playgroud)

由于requireRubyMotion中没有方法,如何从电子邮件生成哈希?

ios rubymotion

6
推荐指数
1
解决办法
500
查看次数

MKMapView中的奇怪行为 - 引脚消失了

在我的应用程序中,我们有一个带有MKMapView的屏幕.

此地图显示了一堆位置的引脚(位置是应用程序中定义的模型).

在模拟器中运行时,这很好用.但是,当在设备上运行时,引脚似乎消失并且几乎每次平移地图时都会重新出现.即使轻微的触摸和移动也可能导致地图显示和隐藏引脚.

地图不是特别繁忙,即使显示一个引脚也会显示并隐藏它.

有谁知道为什么会这样?我在下面粘贴了我的代码......这是一个Rubymotion应用程序,所以代码是在Ruby中.

- 更新 -

我在下面添加了与此Ruby代码等效的Objective C.抱歉,如果有一些拼写错误或惯用语错误,那我已经写了一段时间了.

- 更新2 -

看着记录器,我可以看到mapView:viewForAnnotation每次地图引脚消失/重新出现时都会调用它.

每次mapView:regionDidChangeAnimated我都可以看到注释的对象ID是相同的 - 所以我不认为它们被删除(它们不应该被删除)

# ====================
# = MKMapKitDelegate =
# ====================

# Don't react if the user has moved less than three meters
USER_MOVE_THRESHOLD = 3

# The user location has changed
def mapView(mapView, didUpdateUserLocation: newLocation)
  NSLog("mapView:didUpdateUserLocation")
  return unless userLocation
  coord = newLocation.coordinate
  newLocationAsCL = CLLocation.alloc.initWithCoordinate(coord, altitude: 1, horizontalAccuracy:1, verticalAccuracy: -1, timestamp: nil)    
  meters = newLocationAsCL.distanceFromLocation(@lastUserCLLocation)

  # If user has moved less …
Run Code Online (Sandbox Code Playgroud)

objective-c mkmapview ios rubymotion

6
推荐指数
1
解决办法
1078
查看次数

iOS上的SIGTRAP错误 - AutoreleasePoolPage :: busted

有没有人知道导致这次崩溃的原因是什么?

它很少发生.

崩溃报告来自设备的HockeyApp.我无法在模拟器上重现它.

任何想法都非常感激.

Exception Type:  SIGTRAP
Exception Codes: #0 at 0x197c73c10
Crashed Thread:  0

Thread 0 Crashed:
0   libobjc.A.dylib                      0x0000000197c73c10 _objc_trap() + 0
1   libobjc.A.dylib                      0x0000000197c73c80 _objc_fatal + 80
2   libobjc.A.dylib                      0x0000000197c8e7fc (anonymous namespace)::AutoreleasePoolPage::busted(bool) + 140
3   libobjc.A.dylib                      0x0000000197c8d54c (anonymous namespace)::AutoreleasePoolPage::pop(void*) + 88
4   CoreFoundation                       0x0000000187418f94 _CFAutoreleasePoolPop + 24
5   UIKit                                0x000000018bcd8c28 _wrapRunLoopWithAutoreleasePoolHandler + 72
6   CoreFoundation                       0x00000001874ee14c __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 28
7   CoreFoundation                       0x00000001874eb0d8 __CFRunLoopDoObservers + 356
8   CoreFoundation                       0x00000001874eb4b8 __CFRunLoopRun + 832
9   CoreFoundation                       0x00000001874191f4 CFRunLoopRunSpecific + 392 …
Run Code Online (Sandbox Code Playgroud)

memory iphone uikit ios rubymotion

6
推荐指数
1
解决办法
2710
查看次数

如何在Yosemite中使用"暗模式"使菜单栏应用程序看起来很好?

在开发菜单栏应用程序时,我很难找到使应用程序看起来很好的首选方法.我原本以为Apple控件基本上会在很大程度上处理这个问题,但看起来并非如此.

确保菜单栏应用程序在明暗模式下看起来都很好的首选方法是什么?我是否缺少一些可以更轻松地实现此功能的控制功能,还是需要手动检测模式并适当地修改控件?

cocoa menubar rubymotion osx-yosemite osx-elcapitan

6
推荐指数
1
解决办法
1828
查看次数

MacRuby/PyObjC/RubyMotion的代码完成

Xcode最强大的功能之一就是它的Intellisense完成功能,它会在您输入Foundation/Cocoa/UIKit API的名称时显示潜在候选项列表.我对MacRuby,PyObjC或更新的RubyMotion非常感兴趣,但是如果没有代码完成,这些工具似乎比它们的价值更麻烦.

上述三种技术中的任何一种,对于任何文本编辑器(但最好是Vim或Xcode),是否有任何代码完成功能(不一定是Intellisense )?IDE解决方案的奖励点,允许在单个命令中构建和运行应用程序(如Xcode的"运行"按钮).

据我所知,Xcode 4放弃了对MacRuby/PyObjC的支持,因此Intellisense不再可用.为了完成代码,我应该在Xcode 4旁边安装Xcode 3吗?其他人如何做到这一点(当然你们使用某种形式的代码完成 - 我不相信任何人都能记住Foundation/Cocoa/UIKit中的所有类)?

xcode pyobjc macruby rubymotion

5
推荐指数
1
解决办法
1343
查看次数

NSTokenField 完成列表样式

我是 OSX 开发的初学者,所以我希望我的问题能在这里找到解决方案。

我的NSTokenField应用程序中有一个,我实现了该tokenField:completionsForSubstring:indexOfToken:indexOfSelectedItem:方法。

一切正常,但目前的结果是这样的:

在此处输入图片说明

我想要的是让它看起来像这样:(类似于邮件应用程序中的完成)

在此处输入图片说明

这意味着我希望完成列表采用所有 NSTokenField 宽度。使用Accessibility Inspector,我可以看到与第一个 sreenshot 对应的层次结构是:

AXScrollArea -> AXList -> AXTextField

而对应于第二个屏幕截图的是:

AXScrollArea -> AXTable -> AXRow:AXTableRow -> AXTextField

所以我想我必须使用 anNSTableView来显示完成列表,但我不知道如何实现。有谁知道这怎么可能?

在此先感谢您的帮助。

编辑

至少有 2 人建议我实现该tokenField:menuForRepresentedObject:方法并使用适当的NSMenu属性定义菜单宽度。但是这个方法用于为给定的令牌定义一个菜单,我已经实现了它:

  def tokenField(tokenField, menuForRepresentedObject:representedObject)
    theMenu = NSMenu.alloc.initWithTitle("Email address context menu")
    item_0 = theMenu.insertItemWithTitle('add_to_address_book'.localized, action:'add_to_address_book', keyEquivalent:"", atIndex:0)
    item_0.setTarget(self)
    item_1 = theMenu.insertItemWithTitle('new_message'.localized, action:'new_message', keyEquivalent:"", atIndex:1)
    item_1.setTarget(self)
    theMenu
  end
Run Code Online (Sandbox Code Playgroud)

这给了我这样的东西:

tokenField:menuForRepresentedObject:

很棒的东西,但不是我在这里问的。

macos cocoa objective-c rubymotion

5
推荐指数
0
解决办法
453
查看次数

新RubyMotion和Joybox的麻烦

有没有人在使用joybox更新rubymotion时遇到问题?我刚刚更新了rubymotion今天早上我的应用程序立即崩溃...这是我的错误.

Inheriting from Motion::Project::Command' has been deprecated, inherit fromMotion::Command' instead.
Run Code Online (Sandbox Code Playgroud)

不知道这是不是为什么它会破裂......但我需要弄明白这一点.我试过回滚版本,找不到适用的版本.非常感激任何的帮助.

ruby rubygems rubymotion

5
推荐指数
1
解决办法
290
查看次数