2016-03-23 20 views
5

システムフォントではないuseSingleLineModeをtrueに設定すると、テキストの先頭が切り捨てられます。偽usesSingleLineMode =と非システムフォント、:useSingleLineModeがtrueの場合、NSTextField非システムフォントのコンテンツがクリップされる

  • 良い

    私はこれを説明する3非常に簡単なテストケースを作成しました。正常に動作します。

  • bad:usesSingleLineMode = trueの非システムフォント。動作しません。
  • システム:usesSingleLineMode = trueのシステムフォント。正常に動作します。

新しいココアOSXアプリケーションののviewDidLoad()メソッドに以下を追加します。私は、ストーリーボードにインターフェイスBuilderを使用して同じbad NSTextFieldを作成する場合は、設定

// Do any additional setup after loading the view. 
let good = NSTextField(frame: NSRect(x: 0, y: 0, width: 800, height: 55)) 
good.usesSingleLineMode = false 
good.font = NSFont(name: "HelveticaNeue-UltraLight", size: 24) 
good.stringValue = "Good usesSingleLineMode false " 
self.view.addSubview(good) 

let bad = NSTextField(frame: NSRect(x: 0, y: 100, width: 800, height: 55)) 
bad.usesSingleLineMode = true 
bad.font = NSFont(name: "HelveticaNeue-UltraLight", size: 24) 
bad.stringValue = "Bad usesSingleLineMode true" 
self.view.addSubview(bad) 

let system = NSTextField(frame: NSRect(x: 0, y: 200, width: 800, height: 55)) 
system.usesSingleLineMode = true 
system.font = NSFont.systemFontOfSize(24) 
system.stringValue = "Good usesSingleLineMode true, System Font" 
self.view.addSubview(system) 

See the result

IBでフォントを使用し、IBでシングルラインモードを使用するかどうかチェックしてください。しかし、IBの全体像を構築することは実用的ではないため、プログラムで作成したいと考えています。

どうしてですか?私はいくつかの重要な設定を見逃している(私は無駄に多くのNSTextFieldとNSTextFieldCellパラメータを調整しようとした?回避策はありますか?

+0

ストレンジを設定することによってそれを解決し、私が持っていますカスタムフォントのボタンもありますが、 'UsesSingleLineMode = true'を設定するとテキストは通常​​の場所に残ります – Eric

+0

"シングルラインモードのセルは固定ベースラインレイアウトを使用します。コンテンツのフォントスタイルやサイズに関係なくサイズを制御してください」ソース:[usesSingleLineMode](https://developer.apple.com/library/mac/documentation/Cocoa/Reference/ApplicationKit/Classes/NSCell_Class/#//apple_ref/occ/ instp/NSCell/usesSingleLineMode) – Willeke

+0

ウィレケ、私はそれを見逃すことができたので、あなたがそれを指摘していただきありがとうございます。しかし、これは明らかに全話ではない。 HelveticaNeue-UltraLightをHelveticaNeue(システムフォントと同じ)に置き換えると、テキストは切り取られます。 NSFont.systemFontOfSize(24)を使用すると、クリッピングが発生しません。また、すべての制御サイズは同一であるため、ベースラインが同一であると結論づけられます。 – drootang

答えて

0

私は同じ問題を抱えていると私は usesSingleLineMode=false

+0

これは私のために働いた。 – eonist

関連する問題