在UIImageView上使用启动图像集

时间:2017-01-25 07:16:25

标签: ios uiimageview asset-catalog

我正在为我的应用创建指令屏幕,我必须放置一个全屏大小的图像。为此,我必须考虑所有屏幕尺寸,因此我在AssetCatalog中创建了一个启动图像集 在视图中,我有UIImageView。在设置UIImageView的图像时,我会看到一个白色屏幕。我猜测发射图像不能设置在UIImageView上 什么可能是最好的方法?
注意:如果需要,请根据最新的命名惯例(包括iPhone X)分享您的答案。

6 个答案:

答案 0 :(得分:2)

启动屏幕就像常规的故事板一样。您可以添加图像视图控制器,文本标签或其他UIKit控件。

出于各种原因,建议不要在启动屏幕上使用静态图片。

  • 它无法本地化。
  • 它可能会根据屏幕分辨率和设备方向而变形。

相反,将启动屏幕视为其他任何视图控制器。添加控件,图像和静态文本以及适当的布局约束。这种方法将为您提供更大的灵活性并更好地扩展。

如果您确实要添加静态图像,则将UIImageView控件添加到启动视图控制器,并将其尺寸设置为视图的范围。然后,将图像分配给图像视图控件。

答案 1 :(得分:2)

我认为您创建了一个启动屏幕并在其中使用了imageview。

如果使用它,则必须将映像放在主捆绑包中,而不要放在Assets中,因为资产不会在启动时调用。使用mainbundle图片。

希望它会对您有所帮助。

答案 2 :(得分:1)

LaunchVC中选择完整尺寸UIImageView

  1. 将您的图像集放在单个资源文件夹中Resources-> Images
  2. 将所有图片放在AssetCatalog中,就像您已经完成的那样。为此,您必须具有1x,2x,3x图像尺寸才能在AssetCatalog中显示图像。
  3. 我认为您可能无法在bundleAsset Catlog中拥有图片,并且图片名称没有拼写错误,但仍然无法获取图片。

答案 3 :(得分:1)

不知道图像,很难分辨。 一种方法可能是简单地使用SVG文件(或在iOS中为PDF Vector文件),而仅使用比例设置为single scale的图像资源。 如果您的图像由于文本或其他原因而无法“缩放”,则可能需要考虑使用标签和imageViews在iOS中自行构建。

答案 4 :(得分:1)

您不能直接使用启动图像。我找到了解决方法:

func getLaunchImageName() -> String? {
    // Get All PNG Images from the App Bundle
    let allPngImageNames = Bundle.main.paths(forResourcesOfType: "png", inDirectory: nil)
    // The Launch Images have a naming convention and it has a prefix 'LaunchImage'
    let expression = "SELF contains '\("LaunchImage")'"
    // Filter the Array to get the Images with the prefix 'LaunchImage'
    let res = (allPngImageNames as NSArray).filtered(using: NSPredicate(format: expression))
    var launchImageName: String = ""
    // Now you have to find the image for the Current Device and Orientation
    for launchImage in res {
        do {
            if let img = UIImage(named: (launchImage as? String ?? "")) {
                // Has image same scale and dimensions as our current device's screen?
                if img.scale == UIScreen.main.scale && (img.size.equalTo(UIScreen.main.bounds.size)) {
                    // The image with the Current Screen Resolution
                    launchImageName = launchImage as? String ?? ""
                    // You can store this image name somewhere, I have stored it in UserDefaults to use in the app anywhere
                    UserDefaults.standard.set(launchImageName, forKey: "launchImageName")
                    break
                }
            }
        }
    }
    return launchImageName
}

答案 5 :(得分:0)

我认为您需要新的启动屏幕来显示启动图像。为此,您将创建新的故事板,并将默认启动屏幕更改为目标中的新启动屏幕。看到这张图片enter image description here

在“启动屏幕文件”更改中,选择新的启动屏幕。这个新的启动屏幕可以访问资产中的图像文件。

在很多情况下,如果我们想在启动画面中显示动画,则可以采用这种方法。尝试这种方法可以解决您的问题。