我正在为我的应用创建指令屏幕,我必须放置一个全屏大小的图像。为此,我必须考虑所有屏幕尺寸,因此我在AssetCatalog中创建了一个启动图像集
在视图中,我有UIImageView
。在设置UIImageView
的图像时,我会看到一个白色屏幕。我猜测发射图像不能设置在UIImageView
上
什么可能是最好的方法?
注意:如果需要,请根据最新的命名惯例(包括iPhone X)分享您的答案。
答案 0 :(得分:2)
启动屏幕就像常规的故事板一样。您可以添加图像视图控制器,文本标签或其他UIKit控件。
出于各种原因,建议不要在启动屏幕上使用静态图片。
相反,将启动屏幕视为其他任何视图控制器。添加控件,图像和静态文本以及适当的布局约束。这种方法将为您提供更大的灵活性并更好地扩展。
如果您确实要添加静态图像,则将UIImageView控件添加到启动视图控制器,并将其尺寸设置为视图的范围。然后,将图像分配给图像视图控件。
答案 1 :(得分:2)
我认为您创建了一个启动屏幕并在其中使用了imageview。
如果使用它,则必须将映像放在主捆绑包中,而不要放在Assets
中,因为资产不会在启动时调用。使用mainbundle图片。
希望它会对您有所帮助。
答案 2 :(得分:1)
在LaunchVC
中选择完整尺寸UIImageView
Resources-> Images
。AssetCatalog
中,就像您已经完成的那样。为此,您必须具有1x,2x,3x图像尺寸才能在AssetCatalog
中显示图像。我认为您可能无法在bundle
或Asset 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)