在Beacon范围内显示图像而不是颜色

时间:2017-05-10 00:29:40

标签: ios image ibeacon

我正在尝试对应用进行编程,以便在它进入信标范围时更改屏幕,并且一直在关注本教程: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,但它没有为我提供选择图像的选项,类似于在使用UIColor

时让我选择颜色的方式

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

我正在使用Xcode 8.3.2

1 个答案:

答案 0 :(得分:1)

好的,您需要采取以下几个步骤:

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

现在打开一个助理编辑器窗口并将其设置为“自动”,这将导致它显示视图控制器的源。

从图像视图控制拖动到视图控制器的顶部以创建IBOutlet。我们称之为anImageView

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

假设您的资产目录中有名为“unknown.png”,“far.png”,“near.png”和“immediate.png”的条目都是相同的维度(比如说@xx为100x100分, @ 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")
}

应该这样做。