2017-09-19 15 views
2

1行ラベルに "Truncate Middle"を使用しようとしています。 「Single Line Mode」を選択し、Layoutを「Truncates」に設定し、行区切りを「Truncate Middle」に設定し、「First Runtime Layout Width」および「Content Hugging Priority」を250に設定しました。ラベルのテキストを切り捨てます

私のViewControllerで layout

:ここ

私は切り捨てを有効にしようとしていた上<タイトル>ラベルと私のレイアウトだ

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view. 
    titleLabel.stringValue = "This is a very very long title that should be truncated because it would enlarge the window unnecessary!" 
} 

それは動作しません、ウィンドウが表示するように拡大されています完全なタイトルおよびユーザはその幅を縮小することができない。

"Truncates"/"Truncate Middle"から "Wraps"/"Character Wrap"にレイアウトや改行を変更すると、それはうまく動作しますが、中央の切り捨てはありません。私はこのように動作するように切り捨てる期待してい

screenshot with wrap

これは非常に非常に長いテキストがあるが...ウィンドウが不要RGE!

多分私に何かが不足していますか?

はEDIT:ここで問題をテストするためのサンプルプロジェクトがあります:切り捨て途中の場合https://nofile.io/f/9s9OJXHaaw1/TestTruncate.zip

+0

をごラベルの幅は固定されている必要があります。両方のラベル(ウィンドウと大きなテキスト)の末尾の制約を確認してください。現在のところ、後続の制約が破れているため、ウィンドウラベルから固定距離ではなく長いラベルが得られるようです。 UIのデバッグもチェックインできます。 – Pawan

答えて

1

あなたコンテンツ圧縮抵抗の優先順位NSTextView未満NSLayoutPriorityWindowSizeStayPut(例えば499)のを設定する必要があります。そうしないと、NSTextViewは内容を切り捨てません。 (Reference

私は499500からHorizontalContent Compression Resistance Priorityを設定することによって、これを達成することができました。>サイズインスペクタ - -

あなたのラベルを選択することで、そうすることができ、私に次のような出力与える>コンテンツ圧縮の抵抗の優先順位

enter image description here

:、切り捨てミドルため

enter image description here

1

、あなたにも中央に配置を設定する必要があります。

+0

私はテールを切り捨ててみましたが、同じ問題がありました。私は中心の位置を合わせて中央を切ってみましたが、私は依然として好ましいサイズよりも小さいウィンドウのサイズを変更できません。たぶん私は何かを見逃している、私はあなたがそれをあなた自身で見ることができるように私のサンプルプロジェクトを添付するつもりです。 –

2

これは非常に単純なものです。ただ、override func viewDidLoad()

yourLabel.lineBreakMode = .byTruncatingMiddle 

にこの行を追加したり、あなたはまた、Interface Builderのからそれを設定することができます。ラベルを選択し、Line BreakTruncate Middleと設定します。あなたはNSTextViewのための自動レイアウトを使用してNSViewを囲む場合

enter image description here

+0

これは私が現在AppKit(OS X)で行っていることですが、AppKitではUIKitのラベルでうまくいくようですが、テキストのフィールドの大きさよりも小さいウィンドウのサイズを変更することはできません。それはレイアウトの制約と何か関係があります。 –

関連する問題