在信标范围内时显示图像而不是颜色

Display images instead of colours when in Beacon range

我正在尝试编写一个应用程序以在它进入信标范围时更改屏幕并且一直在学习本教程:https://www.hackingwithswift.com/example-code/location/how-to-detect-ibeacons

教程使用代码:

func updateDistance(_ distance: CLProximity) {
UIView.animate(withDuration: 0.8) {
    switch distance {
    case .unknown:
        self.view.backgroundColor = UIColor.gray

    case .far:
        self.view.backgroundColor = UIColor.blue

    case .near:
        self.view.backgroundColor = UIColor.orange

    case .immediate:
        self.view.backgroundColor = UIColor.red

根据信标相对于设备的距离告诉应用程序更改为不同的颜色。我希望我的应用程序做同样的事情,但我希望它显示图像而不是显示颜色。

我曾尝试使用 UIImageView,但它没有为我提供 select 图像的选项,类似于使用 [=12] 时它让我 select 颜色的选项=]

有人可以向我解释如何让它显示图像而不是颜色吗?

我正在使用 Xcode 8.3.2

好的,您需要执行几个步骤:

进入界面生成器并创建图像视图。设置布局约束以将其放置在屏幕上您想要的位置,并设置约束以将其高度和宽度设置为您要显示的图像的高度和宽度。

现在打开一个辅助编辑器 window 并将其设置为 "automatic",这应该会显示您的视图控制器的源代码。

按住 Control 从您的图像视图拖动到视图控制器的顶部以创建一个 IBOutlet。我们称它为 anImageView.

以您想要支持的目标分辨率在应用的资产目录中创建图像。对于 Retina 设备和 6+,您可能需要 @2x 和 @3x 大小的图像。您不再需要非视网膜图像,因为 iOS 9 及更高版本不再支持非视网膜设备。

假设您的资产目录中有名为 "unknown.png"、"far.png"、"near.png" 和 "immediate.png" 的条目,它们的尺寸都相同(比如 100x100 点,带 @ 2x 和@3x 版本,仅作为示例。)

现在像这样重写你的函数:

func updateDistance(_ distance: CLProximity) {
    switch distance {
    case .unknown:
        anImageView.image = UIImage(named: "unknown")

    case .far:
        anImageView.image = UIImage(named: "far")

    case .near:
        anImageView.image = UIImage(named: "unknown")

    case .immediate:
        anImageView.image = UIImage(named: "immediate")
}

应该可以了。