使用SizeToFit()来顶部对齐UILabel会导致跳跃

时间:2015-05-30 19:40:43

标签: ios swift uilabel

以下代码用于将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

任何想法我怎么能避免这种恶魔般的跳跃?

1 个答案:

答案 0 :(得分:-1)

更新:

如果您使用的是故事板和自动布局,则不应使用sizeToFit()sizeToFit()是“旧”方式的一部分,在自动布局之前,如果Storyboard使用任何Constraints,则不会按预期运行。

而不是在Interface Builder中:

  • 设置为0(允许多行)
  • 使用任何约束
  • 根据需要定位标签
  • width
  • 添加固定的约束
  • 使用小于或等于
  • 身高添加 Contraints

这将确保位置正确,并允许自动布局在更新内容时根据需要调整UILabels高度。

enter image description here

更新2:

由于建议的答案有效,我不完全确定为什么我被投票。 在这个例子中,我使用计时器来更新我的标签,见结果:

enter image description here

enter image description here

enter image description here

enter image description here