单点触控更改捆绑路径
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 文件(捆绑路径)
运行路径搜索路径原因:无法加载捆绑包“MySecondFramework”,因为它已损坏或缺少必要的资源