2011-11-10 1 views
3

私はiOS(iPhoneとiPad)用のアプリケーションを開発していますが、テキストが表示されるビューにUILabelがあります。テキストが長すぎる場合、UILabelが自動的にそれを縮小し、例えば:UILabelテキストが短縮/縮小されているかどうかを調べるには?

が「このいくつかの長いテキストがされて」「これは、いくつかある...」と表示されます

をこの動作は、正しい完全に許容可能な、とさえありますテキストが短縮されたかどうかを知りたいと思います。 UILabelがコンテンツを短くしたかどうかを見つける方法はありますか?

フォントサイズを自動的に縮小するなどのUILabelの魔法の機能を使用したいので、私は本当に簡単な解決策が必要です。テキストがちょうど非常に長くなることがありますので、ボタンをタップした後に表示します。しかし、テキストがあまりにも長くない場合は、インターフェイスを簡単にするためにそのボタンを隠したいと思います。 どのようにこれを達成するために考えていただければ幸いです。

答えて

6

ラベルのテキストの長さはラベルの標準フォントで確認してください。それがラベルの幅よりも長い場合は、より小さく描画されます。

CGSize stringSize = [aLabel.text sizeWithFont:aLabel.font]; 
if (stringSize.width > aLabel.frame.size.width) { 
     // It's drawing the label with a reduced font. 
} 

注:これは古い回答です。 AppleがAPIをアップデートするにつれ、いくつかのことが変わる必要があります。基本的なテクニックはまだ動作しますが、使用されるメソッド呼び出しを更新する必要があります。アップデートのためのVinsの答えを見てください。

3

iOS 7では、sizeWithFontは推奨されていません。

CGSize stringSize = [aLabel.text sizeWithAttributes:@{NSFontAttributeName: aLabel.font}]; 
    if (stringSize.width > aLabel.frame.size.width) { 
      // It's drawing the label with a reduced font. 
    } 

ラベルが複数行ある場合:

CGSize stringSize = [aLabel.text sizeWithAttributes:@{NSFontAttributeName: aLabel.font}]; 
    if (stringSize.width > aLabel.frame.size.width*numOfLines) { 
      // It's drawing the label with a reduced font. 
    } 
関連する問題