草庐IT

ios - 图标的图像路径并在信息列表中启动图像

coder 2023-09-29 原文

我想在一个项目中添加几个包含不同应用程序图标的不同资源文件夹。

然后在项目目标中设置5个不同的应用程序。我为每个创建了不同的info.plist。如何为每个应用程序指定不同的图标文件并启动图像文件?

我将有5个包含图标图像的不同文件夹,例如app1/icon.png app2/icon.png

我试图将路径添加到plist中,但似乎无法拾取文件。

如果我尝试在“目标摘要”选项卡中添加图标文件,它将图标文件复制到根文件夹中并覆盖以前的文件。

我可以通过在图像中添加前缀来快速解决问题,例如app1_icon.png,app2_icon.png

我敢肯定有更好的方法可以做到这一点。

最佳答案

如何在单个Xcode项目中将单独的图标和其他文件添加到多个iOS TARGET应用程序

因此,您有多个iOS应用程序,它们共享Xcode中的通用代码库。
您可能正在创建Lite/Pro,免费/付费或类似应用程序的外观独特的版本。
您已经了解了如何复制TARGETS,并希望已经了解了如何为每个目标分别指定.plist文件。您还了解了如何使用在“构 build 置”>“预处理器宏”中指定的编译器指令(即#define MACROS)来启用和禁用各种目标应用程序中略有不同的行为。

现在,您要尝试为每个目标指定图标文件,并遇到困难。如果尝试使用不同的“默认*”启动镜像或其他资源,而您希望每个目标在其中使用具有相同文件名集的不同图形资源文件,则会遇到相同的问题。

这是您必须做的:

  • 为您的每个目标(例如“App-A”和“App-B”)建立目录
    可以放置由图标组成的名称相同的文件集
    还有其他
  • 在项目层次结构中使Xcode组具有与各种目标目录名称相同的名称。这不是必需的,但是使您的生活更加轻松,如步骤9所示。
  • 将图标和其他图像添加到这些组中。是的,它们可以(并且应该)在目标之间具有相同的名称。例如,在App-A和App-B中都可以有“icon-57.png”。
    提示:在将文件添加到每个组之前,将Xcode设置为为与该组关联的目标构建。例如,如果要向App-B添加图像,请在Xcode界面的左上角靠近“运行”和“停止”按钮的位置,在选项菜单中选择“App-B>我的iPhone”。这会将您的图像成员资格与正确的目标相关联,并在接下来的步骤中为您提供帮助。不需要此提示。
  • 现在,使用@rckoenes在上面的注释中建议的重要部分。您必须为添加的每个文件设置目标成员资格。单击每个目标,选择“构建阶段”,然后调低“复制 bundle 资源”。您必须添加适合该目标的镜像,并删除其他一个或多个目标使用的镜像。如果您在上一步中遵循了“提示”,则可能已经为您正确设置了此提示。但是,在以下步骤中,此列表可能会损坏,您必须回到此处重新进行调整。
  • 现在,您已经可以在整个应用程序中使用通用资源图像了。您可能已经为需要在每个Target中看起来不同的项目中的图像或按钮图形使用了此方法。现在应该是这样。
  • 图标和Default *背景图像是不同的故事,因为“目标摘要”面板允许您通过拖放来填充这些资源。下一步将帮助您。
  • 对于每个目标,将图标拖到“摘要”屏幕中并将图像文件启动到图像支架。当然,它们必须是正确的大小。 Xcode将征求您的许可,将这些文件复制到项目的根目录。允许它,您稍后将删除它们。在随后的传递过程中,Xcode将请求权限来覆盖您根目录中已经存在的文件。同样,允许它。
  • 在Xcode中,删除出现在项目根目录中的所有新复制的图标和启动器图像文件。允许Xcode将它们移到垃圾箱。
  • 最后,所有创建,移动和复制文件的操作可能会对目标成员(member)资格造成严重破坏。返回上述步骤#4中的说明,并清理所有成员(member)资格。因为路径显示在文件名之后,所以您可以轻松地发现一个目标中包含的图像与错误目标中的图像。这只是我们应谨慎创建目录和组的原因之一,该目录和组应具有步骤1和2中建议的匹配目标名称。

  • 现在,您的每个应用程序都将显示正确的应用程序图标和启动器背景图像。

    如果您以前安装的应用程序没有应用程序图标或图标错误,则可能必须删除该应用程序并重新安装它才能看到新图标。

    下图可以帮助可视化多个目标:

    关于ios - 图标的图像路径并在信息列表中启动图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17990932/

    有关ios - 图标的图像路径并在信息列表中启动图像的更多相关文章

    1. ruby-on-rails - Rails 常用字符串(用于通知和错误信息等) - 2

      大约一年前,我决定确保每个包含非唯一文本的Flash通知都将从模块中的方法中获取文本。我这样做的最初原因是为了避免一遍又一遍地输入相同的字符串。如果我想更改措辞,我可以在一个地方轻松完成,而且一遍又一遍地重复同一件事而出现拼写错误的可能性也会降低。我最终得到的是这样的:moduleMessagesdefformat_error_messages(errors)errors.map{|attribute,message|"Error:#{attribute.to_s.titleize}#{message}."}enddeferror_message_could_not_find(obje

    2. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

      我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

    3. ruby - RVM 使用列表[0] - 2

      是否有类似“RVMuse1”或“RVMuselist[0]”之类的内容而不是键入整个版本号。在任何时候,我们都会看到一个可能包含5个或更多ruby的列表,我们可以轻松地键入一个数字而不是X.X.X。这也有助于rvmgemset。 最佳答案 这在RVM2.0中是可能的=>https://docs.google.com/document/d/1xW9GeEpLOWPcddDg_hOPvK4oeLxJmU3Q5FiCNT7nTAc/edit?usp=sharing-知道链接的任何人都可以发表评论

    4. ruby-on-rails - 启动 Rails 服务器时 ImageMagick 的警告 - 2

      最近,当我启动我的Rails服务器时,我收到了一长串警告。虽然它不影响我的应用程序,但我想知道如何解决这些警告。我的估计是imagemagick以某种方式被调用了两次?当我在警告前后检查我的git日志时。我想知道如何解决这个问题。-bcrypt-ruby(3.1.2)-better_errors(1.0.1)+bcrypt(3.1.7)+bcrypt-ruby(3.1.5)-bcrypt(>=3.1.3)+better_errors(1.1.0)bcrypt和imagemagick有关系吗?/Users/rbchris/.rbenv/versions/2.0.0-p247/lib/ru

    5. ruby - 如何验证 IO.copy_stream 是否成功 - 2

      这里有一个很好的答案解释了如何在Ruby中下载文件而不将其加载到内存中:https://stackoverflow.com/a/29743394/4852737require'open-uri'download=open('http://example.com/image.png')IO.copy_stream(download,'~/image.png')我如何验证下载文件的IO.copy_stream调用是否真的成功——这意味着下载的文件与我打算下载的文件完全相同,而不是下载一半的损坏文件?documentation说IO.copy_stream返回它复制的字节数,但是当我还没有下

    6. Ruby 文件 IO 定界符? - 2

      我正在尝试解析一个文本文件,该文件每行包含可变数量的单词和数字,如下所示:foo4.500bar3.001.33foobar如何读取由空格而不是换行符分隔的文件?有什么方法可以设置File("file.txt").foreach方法以使用空格而不是换行符作为分隔符? 最佳答案 接受的答案将slurp文件,这可能是大文本文件的问题。更好的解决方案是IO.foreach.它是惯用的,将按字符流式传输文件:File.foreach(filename,""){|string|putsstring}包含“thisisanexample”结果的

    7. ruby-on-rails - 添加回形针新样式不影响旧上传的图像 - 2

      我有带有Logo图像的公司模型has_attached_file:logo我用他们的Logo创建了许多公司。现在,我需要添加新样式has_attached_file:logo,:styles=>{:small=>"30x15>",:medium=>"155x85>"}我是否应该重新上传所有旧数据以重新生成新样式?我不这么认为……或者有什么rake任务可以重新生成样式吗? 最佳答案 参见Thumbnail-Generation.如果rake任务不适合你,你应该能够在控制台中使用一个片段来调用重新处理!关于相关公司

    8. 【鸿蒙应用开发系列】- 获取系统设备信息以及版本API兼容调用方式 - 2

      在应用开发中,有时候我们需要获取系统的设备信息,用于数据上报和行为分析。那在鸿蒙系统中,我们应该怎么去获取设备的系统信息呢,比如说获取手机的系统版本号、手机的制造商、手机型号等数据。1、获取方式这里分为两种情况,一种是设备信息的获取,一种是系统信息的获取。1.1、获取设备信息获取设备信息,鸿蒙的SDK包为我们提供了DeviceInfo类,通过该类的一些静态方法,可以获取设备信息,DeviceInfo类的包路径为:ohos.system.DeviceInfo.具体的方法如下:ModifierandTypeMethodDescriptionstatic StringgetAbiList​()Obt

    9. UE4 源码阅读:从引擎启动到Receive Begin Play - 2

      一、引擎主循环UE版本:4.27一、引擎主循环的位置:Launch.cpp:GuardedMain函数二、、GuardedMain函数执行逻辑:1、EnginePreInit:加载大多数模块int32ErrorLevel=EnginePreInit(CmdLine);PreInit模块加载顺序:模块加载过程:(1)注册模块中定义的UObject,同时为每个类构造一个类默认对象(CDO,记录类的默认状态,作为模板用于子类实例创建)(2)调用模块的StartUpModule方法2、FEngineLoop::Init()1、检查Engine的配置文件找出使用了哪一个GameEngine类(UGame

    10. Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting - 2

      1.错误信息:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:requestcanceledwhilewaitingforconnection(Client.Timeoutexceededwhileawaitingheaders)或者:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:TLShandshaketimeout2.报错原因:docker使用的镜像网址默认为国外,下载容易超时,需要修改成国内镜像地址(首先阿里

    随机推荐