单点触控更改捆绑路径

Posted

技术标签:

【中文标题】单点触控更改捆绑路径【英文标题】:Bundle path changes with mono touch 【发布时间】:2014-11-30 02:10:15 【问题描述】:

阅读ios 8: Bundle path changes,看来我需要更改我的应用程序,以便所有图形都在资源目录中。

应用程序正在使用FromFile 访问应用程序中的文件,这可以正常工作。当我将整个图形目录移动到资源并尝试使用FromFile 时,应用程序崩溃并提示找不到文件。

我使用了多种不同的方式来访问该文件,但我总是遇到崩溃(主要是因为有很多不同的页面都在说不同的事情!)。

目前,我正在使用

var assembly = Assembly.GetCallingAssembly();
UIGraphics.BeginImageContext(scrlView.Frame.Size);
UIImage.FromResource(assembly, "Resources/Graphics/Backdrop/Backdrop35PC.png").Draw(scrlView.Bounds);
var img = UIGraphics.GetImageFromCurrentImageContext();
UIGraphics.EndImageContext();
scrlView.BackgroundColor = UIColor.FromPatternImage(img);

对于路径,我尝试省略 Resources/,将 / 更改为 . 以及许多其他不同的方法来尝试避免崩溃。

有没有明确的方法来使用FromResource?我试过不使用assembly,而是使用null。不过,这又一次崩溃了。

【问题讨论】:

【参考方案1】:

FromResource 用于从 classical .NET/Windows .res 文件加载位图,而不是嵌入到您的程序集中(例如 .dll)。 IOW 如果文件存在于您的 application 包中(而不是在您的程序集中),那么您使用了错误的 API。

在这种情况下,您应该使用FromFile 并确保您的路径正确,正如您所指出的,iOS* 更改了一些路径。这已在 XI 8.4.0.27+ 中修复,因此您可以像以前一样继续使用 Environment.GetFolderPath

对于早期版本,您可以使用“Working With The File System”文章中提供的代码。

var documents = NSFileManager.DefaultManager.GetUrls (NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomain.User) [0];

【讨论】:

以上是关于单点触控更改捆绑路径的主要内容,如果未能解决你的问题,请参考以下文章

动态替换 ios 项目中的 .h 和 .m 文件(捆绑路径)

纵向/横向单点触控旋转视图

cas有些请求路径不需要单点登录过滤器拦截

运行路径搜索路径原因:无法加载捆绑包“MySecondFramework”,因为它已损坏或缺少必要的资源

在单点触控中使用 UIActivityViewController

nsbundle 捆绑路径上的警告