【发布时间】:2015-08-13 13:27:27
【问题描述】:
以下代码用于将 UILabel 中的文本垂直对齐到视图框的左上角。但是,它会导致文本在正确的垂直顶部对齐和垂直居中之间来回跳转。它跳跃的节奏似乎与位置更新率有关。
func locationManager(manager: CLLocationManager!, didUpdateLocations locations: [AnyObject]!) {
var userlocation: CLLocation = locations[0] as! CLLocation
CLGeocoder().reverseGeocodeLocation(userlocation, completionHandler: {
(placemarks, error) -> Void in
if( error != nil )
{
println("Error: \(error.localizedDescription)")
return
}
if( placemarks.count > 0 )
{
let placeMark = placemarks[0] as! CLPlacemark
self.nearestAddressLabel.text = ABCreateStringWithAddressDictionary(placeMark.addressDictionary, false);
self.nearestAddressLabel.sizeToFit()
}
else
{
println("No placemarks!")
}
})
}
问题的GIF:https://imgflip.com/gif/m82jf
知道如何避免这种地狱般的跳跃吗?
【问题讨论】:
-
为什么地址变化如此频繁?你能控制吗?
-
UILabel框架对于文本来说是否太大?如果您将标签的backgroundColor临时设置为UIColor.purpleColor(),您可以轻松看到这一点 -
您的标签也是在情节提要中创建的吗?
-
@MichaelL:它的变化与位置的更新一样快。该应用程序正在尝试显示最近的地址。它只是一个测试/学习应用程序。
-
@Dash 标签是在情节提要中创建的,是的。您的背景颜色提示很有启发性 - 看起来正在发生的事情是我的 sizeToFit() 调用正在调整标签的大小以适应文本,但由于某种原因,每次它跳转时标签看起来都变大了(以匹配我的大小在情节提要中)并且文本在处于该状态时无法正确垂直对齐顶部。