【问题标题】:Exception creating a UIImage from an AssetURL in monotouch code在 monotouch 代码中从 AssetURL 创建 UIImage 的异常
【发布时间】:2013-01-21 17:10:51
【问题描述】:

我在这里的第二行代码出现异常。我从 ViewDidLoad 中调用此代码。 _assetURLs[page](在这种情况下 page 为 0),正在返回一个存在且已被检索到的 assetsURL。

UIImage img;
img = new UIImage(new MonoTouch.CoreImage.CIImage(_assetURLs[page]));

有什么想法吗?

这是一个例外: (发生异常是因为 --> new UIImage(...) 而不是因为 new MonoTouch.CoreImage.CIImage(_assetURLs[page])

{MonoTouch.Foundation.MonoTouchException: 抛出 Objective-C 异常。名称:NSInvalidArgumentException 原因:-[UIImage initWithCIImage]:无法识别的选择器在 MonoTouch.ObjCRuntime.Messaging:IntPtr_objc_msgSend_IntPtr (intptr,intptr,intptr) at MonoTouch.UIKit.UIImage..ctor ( MonoTouch.CoreImage.CIImage ciImage) [0x00027] in /Developer/MonoTouch/Source/monotouch/src/UIKit/UIImage.g.cs:376 at ScrollViewPageViewExample.Viewer.LoadPageContent (Int32 page) [0x0002e] in /Users/user1/ Dropbox/Dev/ScrollViewPageViewExample/ScrollViewPageViewExample/Viewer.cs:148 }

【问题讨论】:

  • 我不是一个单点触控用户,但“新”究竟是什么意思,因为在我看来,您正在尝试两次初始化同一个 UIImage。试试 UIImage img = new UIImage(new MonoTouch.CoreImage.CIImage(_assetURLs[page]));
  • new,创建对象的一个​​新实例。如果我没记错的话,这类似于在 obj-c 中初始化一个对象。这里的语法是正确的。作为初始化的一部分,我首先使用资产 URL 初始化 CIImage,以获取该资产图像 URL。然后我用它初始化一个新的 UIImage(作为参数传递给 C# 中的构造函数)
  • 该代码在哪里执行?设备或模拟器?并使用哪个版本的 iOS?即该选择器在 5.0 中是新的(4.3 会抛出 ObjC 异常)。

标签: ios xamarin.ios


【解决方案1】:

MonoTouch 中的一个(already fixed,但尚未发布)错误。

您可以使用接受浮点数和UIImageOrientation 的重载构造函数作为解决方法。

UIImage img = new UIImage (your_ciimage, 1.0f, UIImageOrientation.Up);

【讨论】:

  • 谢谢。我会试试看。在网络上寻找这种类型的 MonoTouch 信息非常困难。几个小时的谷歌搜索和关注这个主题的链接并没有让我们更接近解决这个问题。
  • 不知何故,我们错过了您建议的堆栈溢出文章。
  • 这对我不起作用。我已经就您推荐的代码遇到的这个问题创建了一个关于 SO 的新问题。似乎(对我来说,到目前为止) UIImage 的构造函数没有做它应该做的事情。 stackoverflow.com/questions/14464154/…
猜你喜欢
  • 2020-04-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多