在我的一个XCTests
课程中,我需要从资产目录中加载图像以测试图像处理逻辑.但是,似乎在测试目标中使用了UIImage(named: "imageName")
返回nil
.
我在我的资产目录中检查了测试目标成员资格,我还应该做些什么来启用从我的XCTest
类中读取图像?
我花了好几个小时试图弄明白这个.
目标
显示P3 PDF资产UIImageView
(PDF颜色空间中的PDF为100%).
问题
我正在创建一个P3 PDF资产并添加到Xcode中.在资产目录中,资产以正确的P3颜色显示.UIImageView
在iPhone X 内部使用资产并在其上运行(物理设备,支持P3色彩空间)时,显示的资产是SRGB而不是P3.
有没有人有关于如何解决这个问题的信息?
任何帮助将受到高度赞赏.
投资回报率
我有一个应用程序,从iOS 5开始生活,并从那时起一直在更新.对于iOS 7,我已经切换到使用资产目录来获取所有资源,这很不错并且似乎运行良好.但是,当我尝试提交给Apple时,我收到验证错误:
图像路径无效 - 在"CFBundleIconFiles"键下引用的路径中找不到图像:"Icon@2x.png"
我也得到了其他图标的相同错误.这些图标确实出现在资产目录中,名称 - 直到案例 - 完全符合我的判断.资产目录位于"复制捆绑资源"中,当我在iPhone和iPad(iOS 7)和iOS 6的模拟器中运行应用程序时,所有资源都显示在正确的位置.
我已更新应用程序以使用iOS 6的最低部署目标.
那么,我如何成功将更新提交给Apple?我是否需要Info.plist中的引用?我还应该检查其他任何设置吗?警告是否是虚假的,我应该忽略一些事情(在提升雷达之后)?
使用最新的Xamarin Studio(4.0.13),我正在尝试在我的应用程序中使用资产目录.该应用程序有两个不同的应用程序图标集:一个用于所有测试(Test.plist)和登台(Staging.plist)构建,一个用于所有预生产(PreProduction.plist)和生产(Production.plist)构建.测试包中包含NO app图标,因为我们希望QA清晰,这与生产版本不同.
我已经开始做一个Pre-Build plist cp
步骤(不理想; Xamarin Studio应该有条件地支持包含基于构建配置的文件).有没有办法有条件地捆绑(构建操作ImageAsset
).appiconset
并且.launchimage
特定于我的构建配置?我指定的相关XSAppIconAssets
和XSLaunchImageAssets
,但由于他们都标志着ImageAsset
他们都被复制,无论如何,和(不幸)复制到根文件夹跳板可以找到并显示出来.
有没有办法解决这个问题:
添加更多预构建cp
以将正确的图标集捆绑到一个集合中,这是唯一标记的集合ImageAsset
:
cp iPhone/buildPlists/Staging-Info.plist Info.plist;
cp -r Resources/Images.xcassets/TestAppIcons.appiconset/*
Resources/Images.xcassets/AppIcons.appiconset;
cp -r Resources/Images.xcassets/TestLaunchImages.launchimage/*
Resources/Images.xcassets/LaunchImages.launchimage
Run Code Online (Sandbox Code Playgroud)将空白图像文件添加到 这不起作用,将订单图标集复制到输出文件夹是未定义的TestAppIcons.appiconset
目录中?
iOS 8引入了一个带有方法的UIImageAsset类registerImage:withTraitCollection:
.我该如何使用这门课程?
有没有办法使用资产目录组来有效命名具有共享名称的多个图像?
例如,如果我有多个名为Foo
不同组的图像,有没有办法指定我想要的那个imageNamed:
(即类似的东西UIImage(named:"Group1.Foo")
).
显然,我可以为所有图像自己创建唯一的名称,但如果有一种方法可以利用组合为我做这件事,那就太好了.
我有一个包含两个目标的项目:目标A和目标B.这个目标生成的应用程序"相等"但不同的皮肤(不同的颜色和图像)
为此,项目有两个资产目录,它们相同但内部有不同的图像.每个资产目录都分配给相应的目标.
这完美地工作,我可以生成两个应用程序,但在编辑故事板和分配图像时,我只能看到第一个资产目录中的图像.
有没有办法看到或"预览"具有不同目录的故事板?
因此,自从新的iPhone 6/6 +问世以来,我对如何处理背景图像的资产目录感到困惑.
选项是:
我应该在这里提供什么尺寸,因为iPhone 6+的分辨率是1080x1920
,但是3倍960x1440
,对吧?
我尝试使用XCode的新PDF功能,基本上将图像缩放到1x,2x和3x.不幸的是我也在使用Spritekit,所以我宁愿使用SKTextureAtlases而不是资产目录.
我的问题是,pdf的栅格化版本看起来比Adobe Illustrator(或使用智能对象的Photoshop)的任何导出更好.
这是一个带有示例的Imgur专辑的链接.
具体来说,从Illustrator导出的图像有2个方形尺寸:60px和90px.Xcode中的图像都具有相同的名称,但有两个不同的地图集:atlas@2x.atlas和atlas@3x.atlas.PDF从Illustrator以30px的平方导出,然后Xcode将其缩放到2x和3x版本.
那么为什么Xcode版本看起来更清晰(特别是在圆角和平面之间的连接处)?
我的单元测试目标需要加载用于某些测试的图像资源,但我无法加载它。
我已经检查了测试目标的“复制捆绑资源”构建阶段,它确实包含资产目录。
我检查了资产目录和图像集的目标成员资格,确实是测试目标。
运行测试时,我尝试使用如下代码加载图像:
guard let image = NSImage(named: NSImage.Name("TestSourceImage")) else {
fatalError("Test Resource is Missing.")
}
Run Code Online (Sandbox Code Playgroud)
...但守卫失败了。
我也试过:
let bundle = Bundle(for: MyClassTests.self)
guard let path = bundle.pathForImageResource(NSImage.Name("TestSourceImage")) else {
fatalError("Test Resource is Missing.")
}
guard let image = NSImage(contentsOfFile: path) else {
fatalError("Test Resource File is Corrupt.")
}
Run Code Online (Sandbox Code Playgroud)
...但第一个守卫失败(无法检索资源路径)。
两种格式我都试过了
NSImage.Name("TestSourceImage")
Run Code Online (Sandbox Code Playgroud)
和:
NSImage.Name(rawValue: "TestSourceImage")
Run Code Online (Sandbox Code Playgroud)
我也试过Bundle.urlForImageResource(_)
,但它也失败了。
我见过类似的问题和答案,但它们适用于iOS或应用程序(主)包中的资源。
我错过了什么?
更新:
在meantine,我身边工作过的问题,加入我的测试图像作为独立的图像资源(未使用的资产目录),并用下面的代码加载它:
let …
Run Code Online (Sandbox Code Playgroud) asset-catalog ×10
xcode ×5
ios ×2
color-space ×1
info.plist ×1
ios7 ×1
ios8 ×1
iphone ×1
macos ×1
nsimage ×1
pdf ×1
sktexture ×1
sprite-kit ×1
uiimageasset ×1
uiimageview ×1
xamarin.ios ×1
xctest ×1
xctestcase ×1