我目前正在开发我的第一个主要 RubyMotion 应用程序。我有很多 html 文本要显示,并且想摆脱使用 UIWebView ——因为它有点像 hack,而且如果没有很多箍,很难正确调整大小。所以,我的选择之一是 DTCoreText,它似乎是这批最常用和最稳定的控制。
我最初尝试使用 CocoaPod 版本,但由于某种原因,它导致另一个 pod 的 MKNetworkKit 出现问题。我搞砸了一点,但看到 MKNetworkKit 中报告了很多关于构建过程的问题,所以我最好不要管它。
相反,我选择了供应商选项。我 git 将 DTCoreText 存储库克隆到我的供应商目录中,并将其添加到我的项目中。虽然它通过编译库并制作我的 libDTCoreText.a 文件让我更接近,但在实际运行它之后我仍然卡住了。
我的 Rake 文件包括这个(其余的都很通用):
app.vendor_project('vendor/DTCoreText',
:xcode,
:target => 'Static Library',
:products => ['libDTCoreText.a'])
app.libs << '/usr/lib/libxml2.2.dylib' #For DTCoreText
就像我说的,libDTCoreText.a 文件被编译并复制到我项目中的正确位置。
我的应用程序在代码中有这个。它是尽可能基本的——我只是想看到它起作用。
@source = DTAttributedTextView.alloc.initWithFrame(CGRectZero)
@source.attributedString = NSAttributedString.alloc.initWithHTMLData(post.source.dataUsingEncoding(NSString.defaultCStringEncoding), options:{}, documentAttributes:nil)
@source.frame = [[self.frame.size.width / 2 - size.width / 2, 600], [250, 250]]
应用程序可以编译,但在运行时当我们点击上面的代码时,它会崩溃:
Objective-C stub for message `initWithHTMLData:options:documentAttributes:'
type `@@:@@^@' not precompiled. Make sure you properly link with the framework
or library that defines this message.
*** simulator session ended with error: Error Domain=DTiPhoneSimulatorErrorDomain
Code=1 "The simulated application quit." UserInfo=0x10019d470
{NSLocalizedDescription=The simulated application quit., DTiPhoneSimulatorUnderlyingErrorCodeKey=-1}
有没有人有任何想法我可以开始寻找?我对 XCode 构建过程还不太了解,所以我可能遗漏了一些东西。但它似乎应该工作。它对我说它可以正确地看到标题(并且可以编译),但它不知道实际的库在哪里。