根据Apple文档,建议在iOS7应用程序中使用xcassets,并通过imageNamed引用这些图像.
但据我所知,imageNamed和内存总是存在问题.
所以我做了一个简短的测试应用程序 - 使用imageNamed从xcassets目录中引用图像并启动了分析器...结果如预期的那样.一旦分配的内存没有再次释放,即使我从superview中删除了ImageView并将其设置为nil.
我目前正在开发一个带有许多大图像的iPad应用程序,这种奇怪的imageView行为会导致内存警告.
但在我的测试中,我无法通过imageWithContentsOfFile访问xcassets图像.
那么在iOS7上使用大图像的最佳方法是什么?有没有办法以另一种(更高性能)的方式从xcassets目录访问图像?或者我不应该使用xcassets,以便我可以使用imageWithContentsOfFile?
谢谢您的回答!
我遵循制作静态启动屏幕图像的指导原则.
然而,然后我将图像作为LaunchImage添加到xcassets中
但是,他们没有按预期填写资产.有警告警告我需要有屏幕尺寸,如2208x1242等.我可以拥有应用程序所需的所有尺寸?
另外,为什么没有iPad Pro发布图像?我该如何添加它?谢谢.
假设我的项目中有两个资产,或者我项目下可能有更多资产.
AppImages.xcassets
和01 ConsumerSelectionVCtr.xcassets
.为什么编译器没有显示多个相同图像集的错误xcassets
.我在用
self.imageView.image = UIImage(named: "foo.png")
选择并加载图像UIIMageView
.我在我的应用程序下面有图像images.xcassets
.问题是,init
根据官方Apple文档,此特定缓存图像以供重用:
如果您有一个只显示一次的图像文件并希望确保它不会被添加到系统的缓存中,您应该使用imageWithContentsOfFile创建图像:.这会将您的一次性图像保留在系统图像缓存之外,从而可能会改善应用程序的内存使用特性.
我的视图允许在选择之前循环显示图像,因此当我循环时内存占用量不断增加,即使从该视图导航回来也不会下降.
所以我试图使用UIIMage(contentsOfFile: "path to the file")
哪些不缓存图像.在这里,我无法以编程方式获取我在images.xcassets下存储的图像的路径.
我尝试过使用:
NSBundle.mainBundle().resourcePath
和 NSBundle.mainBundle().pathForResource("foo", ofType: "png")
没有运气.对于第一个我得到了resourcePath,但是在通过终端访问它时,我看不到它下面的任何图像资产,而是我nil
在使用它时得到的第二个.有一个简单的方法来做到这一点?
还看了几个SO问题(像这样,这个和这个)没有运气.我是否必须将我的图像放在其他地方才能使用pathForResource()
?什么是正确的方法?
很难想象在:)之前没有人遇到过这种情况!
在 Xcode 11 上,我的 .xcassets 不会在 Xcode 10 上引起任何问题,导致编译失败并显示以下消息:
错误:多个命令产生“/Users/user/Library/Developer/Xcode/DerivedData/project-enjiypsgxtcdbnaripixgtnjlagx/Build/Products/Debug-iphonesimulator/project.app/Assets.car”:1
)目标“项目”(项目“项目” ') 具有输入为 '/Users/user/sandbox/project/Resources/buttons.xcassets' 的编译命令
2) 该命令取决于目标 'project'(项目 'project')中的命令:脚本阶段“[CP] Copy Pods资源”
我能够编译项目的唯一方法是从目标中删除 .xcassets,明显的缺点是它们在构建中不可用。
PS:这发生在 2 个 ObjC 项目中。
简而言之 :
我如何可以加载一个编译的映像Assets.car
内的NSBundle
?
完整版本:
我正在转换一套应用程序以供使用CocoaPods
.每个应用程序都依赖于一个名为的共享pod Core
.
Core
包括代码文件,xib
文件和几个xcasset
文件.
这是创建资源包的Podspec
for 的相关行Core
:
s.resource_bundles = {'CoreResources' => ['Core/Resources/*']}
Run Code Online (Sandbox Code Playgroud)
该Podspec
通行证pod spec lint
依赖于它,主体工程建立正确.
但是,没有显示任何xcasset
文件中的图像Core
.
我(天真地)尝试使用类似的类别加载图像UIImage
:
@implementation UIImage (Bundle)
+ (UIImage *)imageNamed:(NSString *)name bundle:(NSBundle *)bundle
{
if (!bundle)
return [UIImage imageNamed:name];
UIImage *image = [UIImage imageNamed:[self imageName:name forBundle:bundle]];
return image;
}
+ (NSString *)imageName:(NSString *)name forBundle:(NSBundle *)bundle
{
NSString …
Run Code Online (Sandbox Code Playgroud) 我遇到了XCAssets的问题.我创建了一个带有图标的自定义XCAssets文件.我从文件中得到这样的图像:
[UIImage imageNamed:@"deniedOverlay"];
Run Code Online (Sandbox Code Playgroud)
所以,现在问题.文件未复制到.app文件,因此我得到空白图像.XCAssets文件被添加到"复制包资源".我自己无法解决这个问题.
谢谢!
我需要在静态库中包含图像.我创建了一个捆绑并插入到我的图像中,问题是如果我将图像直接包含在捆绑包中似乎可以工作,但如果我放入xcassets文件则停止工作.
我跟随了很多指南,并在这个网站上寻找解决方案.最流行的解决方案是插入以下代码:
[UIImage imageNamed:@"MyBundle.bundle/imageName"]
Run Code Online (Sandbox Code Playgroud)
但它似乎对我不起作用
有任何想法吗?
我知道要从资产目录中获取图像,我可以使用UIImage(名为:"fileName")来完成它.
但是,如果我从XCAsset目录中获取数据怎么办?我无法弄清楚这一点.
我试过了,
let url = NSBundle.mainBundle().URLForResource("fileName", withExtension: nil)
let data = NSData(contentsOfURL: url!)
Run Code Online (Sandbox Code Playgroud)
但它没有.我不知道如何从XCAssets目录中获取数据.如果有人可以帮助我(谷歌搜索没有帮助),请让我知道我会非常感激!
更新:
为什么我要从资产目录中获取数据?我将动画gif拖入资产目录.资产目录将其解释为DATA.这就是我试图从资产目录中获取数据的原因.
更新:这是我的Assets.xcassets文件夹的屏幕截图.
当我使用Xcode6.4在El Capitan上构建应用程序时(Xcode7现在没有选项),所有图像/图标(AppIcon除外)都没有显示,或者看起来很乱.
查看资产编译器的输出看起来很好,但我怀疑有两个输出可能是相关的,但我很不确定:
2015-10-02 12:26:53.569 ibtoold [28899:273288] NSFileCoordinator什么也没做.
2015-10-02 12:26:54.906 ibtoold [28899:276436] CoreUI(DEBUG):CSIGenerator使用'LZFSE'压缩coreui版本(362.000000)
可能是LZFSE压缩混乱使Yosemite无法正确解压缩,如果是这样,有没有办法覆盖它?
在El Capitan上运行应用程序时没有问题.
任何建议都非常欢迎.
更新: 当应用程序在Yosemite上运行时,这些消息将输出到控制台:
02.10.15 22.31.59,914 AppName [452]: - [CUIThemeRendition newImageFromCSIDataSlice:ofBitmap:usingColorspace:] CSI中不支持的像素格式得到36864
02.10.15 22.31.59,914 AppName [452]:无法从csi位图数据创建未切割的图像.
他们似乎在Xcode的Beta 3有这个问题的iOS7 这里
但现在突然再次出现似乎很奇怪,我的目标是OS X.
更新: 所以我升级到Xcode7,整个问题消失了.所有图像和图标现在都可以在El Capitan和Yosemite中正确显示.
xcasset ×10
ios ×6
xcode ×5
swift ×2
uiimage ×2
bundle ×1
cocoapods ×1
imagenamed ×1
ios7 ×1
ios8 ×1
launchimage ×1
memory-leaks ×1
nsbundle ×1
objective-c ×1
osx-yosemite ×1
xcode6.4 ×1