以下代码用于将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
任何想法我怎么能避免这种恶魔般的跳跃?
答案 0 :(得分:-1)
更新:
如果您使用的是故事板和自动布局,则不应使用sizeToFit()
。 sizeToFit()
是“旧”方式的一部分,在自动布局之前,如果Storyboard使用任何Constraints
,则不会按预期运行。
而不是在Interface Builder中:
这将确保位置正确,并允许自动布局在更新内容时根据需要调整UILabels高度。
更新2:
由于建议的答案有效,我不完全确定为什么我被投票。 在这个例子中,我使用计时器来更新我的标签,见结果: