Swift 3 çözümü
Bence en iyi çözüm, (1)UILabel
kesme için kontrol ettiğiniz etiketle aynı özelliklere sahip bir oluşturmak , (2) aramak .sizeToFit()
, (3) sahte etiketin özelliklerini gerçek etiketinizle karşılaştırmaktır.
Örneğin, değişen genişliğe sahip tek çizgili bir etiketin kesilip kırpılmadığını kontrol etmek istiyorsanız, bu uzantıyı kullanabilirsiniz:
extension UILabel {
func isTruncated() -> Bool {
let label = UILabel(frame: CGRect(x: 0, y: 0, width: CGFloat.greatestFiniteMagnitude, height: self.bounds.height))
label.numberOfLines = 1
label.font = self.font
label.text = self.text
label.sizeToFit()
if label.frame.width > self.frame.width {
return true
} else {
return false
}
}
}
... ancak yine, yukarıdaki kodu ihtiyaçlarınıza uyacak şekilde kolayca değiştirebilirsiniz. Diyelim ki etiketiniz çok satırlı ve değişen yüksekliğe sahip. Daha sonra uzantı şuna benzer görünecektir:
extension UILabel {
func isTruncated() -> Bool {
let label = UILabel(frame: CGRect(x: 0, y: 0, width: self.bounds.width, height: CGFloat.greatestFiniteMagnitude))
label.numberOfLines = 0
label.font = self.font
label.text = self.text
label.sizeToFit()
if label.frame.height > self.frame.height {
return true
} else {
return false
}
}
}