2016-03-23 5 views
5

UILabelサブクラスに問題があり、下のテキストを切り取っています。ラベルの高さはテキストに合わせるためのもので、下部にスペースが残っていますが、テキストはまだ切り取られています。UILabelサブクラス - ラベルが正しい高さになっているにもかかわらず、下端で切り取られたテキスト

The label

赤のストライプは、ラベルの層に境界線を追加しています。

エッジのインセットを追加するためにラベルをサブクラス化します。

override func sizeThatFits(size: CGSize) -> CGSize { 
    var size = super.sizeThatFits(size) 
    size.width += insets.left + insets.right 
    size.height += insets.top + insets.bottom 
    return size 
} 

override func drawTextInRect(rect: CGRect) { 
    super.drawTextInRect(UIEdgeInsetsInsetRect(rect, insets)) 
} 

ただし、この特定のケースでは、インセットはゼロです。

+2

になるようにしてください。ラベルの高さがフォントサイズよりも小さいかフォントサイズを小さくするため、UILabelの高さを上げようとします。 –

+0

ご覧のとおり、テキストの高さはラベルの高さよりも低くなっています。また、このサブクラスの代わりに通常のラベルを使用すると、テキストが途切れることはありません。 –

+0

@mag_zbcどのカスタムフォントを使用していますか? –

答えて

7

問題が

self.lineBreakMode = .ByCharWrapping 

に変更する

self.lineBreakMode = .ByClipping 

していましたが判明し、同時にラベルにtopAnchorとcenterYAnchorを提供する際

1

が私のために起こった問題を修正しました。 アンカーを1つだけ残しておくと、問題が解決しました。

0

他の回答には、私を助けていないが、そうのように、それは、必要なものは何でも高さにラベルの高さをどのように制約されたんでした:あなたのラベルのtext場合

let unconstrainedSize = CGSize(width: CGFloat.greatestFiniteMagnitude, height: CGFloat.greatestFiniteMagnitude) 
label.heightAnchor.constraint(equalToConstant: label.sizeThatFits(unconstrainedSize).height).isActive = true 

はまた、sizeThatFits(_:)0 by 0サイズを返します。フィールドがnilまたは""

関連する問題