如何根据与位置的接近程度更改UIImageView不透明度(Swift)

时间:2015-12-07 13:39:55

标签: ios swift uiimageview

我已经设置了一个定义“MyLocation”的自定义对象,该对象在数组中用于显示最近位置的名称以及用户位置与最近位置之间的距离。

基本上我希望'imageView'的不透明度根据'MyLocation'的.distance值而改变。

所有图像都是在子视图中预先添加的,我只是通过在用户进入区域时更改不透明度来使它们可见。

    func locationManager(manager: CLLocationManager, didEnterRegion region: CLRegion) {

    if  region.identifier == "Home" {

        FirstLocationImg.alpha = 0
        UIView.animateWithDuration(2.0) {
            self.FirstLocationImg.alpha = 1
        }
    }

    if locationsArray.first!.distance < 50 {
        imageView.alpha = locationsArray.first!.distance
    }
}

我认为我的代码主要是在那里,但我得到了

的问题

“无法指定'Double!'类型的值输入'CGFloat'。“

这是我的自定义对象:

class MyLocation {

var coord: CLLocationCoordinate2D!
var distance: Double!
var regionDistance: Double!
var identifier: String!


var region: CLCircularRegion  {
    return CLCircularRegion(center: coord, radius: regionDistance, identifier: identifier)
}

init(coord: CLLocationCoordinate2D, regionDistance: Double, identifier: String) {
    self.coord = coord
    self.regionDistance = regionDistance
    self.identifier = identifier
}

}

我的方法是否正确?还是有更好的方法来解决这个问题?

如此卡住!

提前致谢!

编辑:

我看到我无法为图像的alpha值指定一个或多于1的数字。因此,似乎我需要找到一种方法来将数字(从1-50)转换为从远处到0-1的范围。例如如果我使用2米的增量在alpha刻度上表示0.1?

我是朝着正确的方向前进的吗?

1 个答案:

答案 0 :(得分:0)

我已经解决了问题:

使用

    CGFloat的(locationsArray.first!.distance)

然后将我所拥有的数字除以2点之间的距离,得到0到1之间的数字。