【问题标题】:Set an image as background for all screen resolutions将图像设置为所有屏幕分辨率的背景
【发布时间】:2016-07-23 15:06:09
【问题描述】:

我在应用程序的设计部分遇到了麻烦,希望有人能帮助我。这是我的问题的描述:

我想在我的应用的所有视图的背景中放置一张图片,以适应所有屏幕分辨率。我的设计师给了我这些不同尺寸的背景图片(适用于所有设备,iPhone 和 iPad)。我没有使用尺寸等级,因为它是一个旧项目。我有两个故事板:一个用于 iPad 设备,另一个用于 iPhone 设备。我创建了一个UIImageView,将它放在我的故事板视图中并添加了良好的约束(坚持所有方面)

我尝试了两种方法来实现我的目标:

  1. 使用切片方法,但问题是我有一些徽标 图像,并且变得难以切片。
  2. 使用故事板中图像的Mode,如Aspect fillAspect fitScale to fill等。这种方法的问题在于,背景对于一个设备来说似乎很好,但对于所有其他设备来说却是扭曲的。

我在网上搜索了一些东西,但没有成功。是否有人已经遇到此问题并找到了解决方案?

提前非常感谢!

【问题讨论】:

  • 为什么不能在代码中根据大小指定每张图片?
  • 感谢您的回复 Sujith !我想过这个解决方案,但我没有尝试。实际上,我想知道是否可以处理情节提要中的图像。你不觉得吗?
  • 您是否尝试过使用asset catalogue
  • 您好 Fonix,感谢您的回复!当然我做到了。但在资产目录中,我无法为每个设备分辨率指定图像,仅适用于 1x、2x 和 3x。
  • iphone 设备 5,5s,6,6 plus ,6s ,6s plus 的屏幕尺寸比例相同.. 所以你可以在你的 iphone 故事板中设置一个图像,它会正确缩放到所有这些设备。但是iphone 4的屏幕比例是不同的,所以你只需要在代码中添加它。

标签: ios objective-c iphone ipad storyboard


【解决方案1】:

我认为您需要使用UIViewMode 属性,

如果您使用Aspect fill,那么您的图像将根据尺寸进行设置和裁剪,但在使用Aspect fill 时,您还需要使用clipToBoundYES

如果您使用Aspect fit,则图像将显示为其纵横比。

但对于背景,Aspect fill 将是最好的 clipToBoundYES

【讨论】:

  • 感谢您的回复!我尝试将我的UIImageView 模式设置为Aspect fill 并将clipToBound 设置为YES。根据我的资产目录中图像的大小,它适用于某些设备分辨率,但是当我打开另一种分辨率时,图像并没有覆盖整个屏幕,我在两边都有空白。
  • 那你需要设置图片的最大尺寸。
  • 我做了,我使用的图像尺寸是 1242x2208,设置在资产目录图像集中的 2x 框中。我还尝试将 640x960 放入 1x,将 750x1334 放入 2x,将 1242x2208 放入 3x。
  • 是的,iPhone 4s 将@2x 图像作为 5/5s,因为屏幕具有相同的 Retina 分辨率。要解决这个问题,您应该检查屏幕大小并为 4s 图像使用另一个资产名称。
  • 是的,我们需要为 iPhone 4 设置不同的图像,因为 iPhone 5、iPhone 6 和 iPhone 6P 的宽高比是相同的,但对于 iPhone 4 则不同。所以你需要为 iPhone 4s 设置一个条件并设置不同的图像。
【解决方案2】:

您所要做的就是在 viewDidLoad 中确定屏幕大小并设置不同的图像;如果您的屏幕正在旋转,您可能也想做同样的事情。

【讨论】:

  • 感谢您的回复 gnasher729 !没有办法以情节提要的方式做到这一点?
【解决方案3】:

如果你想为每个视图控制器设置相同的背景图像,你可以在你的 appdelegate 中尝试这个 [self.window setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"default"]]]; 并将视图控制器的背景颜色设置为 clearColor,就是这样。我在我的一个应用程序中做了同样的事情。欢迎提出进一步的建议...

【讨论】:

  • 感谢您的回复!我尝试了你的解决方案,但我在 iPhone 4 上遇到了同样的问题(图像被裁剪)。不过还是谢谢!
  • 自动布局在 iPhone4 上不工作,但在 iPhone4s 上工作。所以你可以检查你的 iPhone 是否是 iPhone4。如果是 iPhone4,则将债券属性设置为您的 UIImageView。它会起作用的。
猜你喜欢
  • 2011-03-10
  • 1970-01-01
  • 2017-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多