NSTextView的高度只有一行?
时间:2020-03-05 18:42:43 来源:igfitidea点击:
我想以编程方式创建一个NSTextView。如何确定正确的框架高度,以便视图以当前默认字体显示一行文本?
解决方案
回答
NSFont类具有一个可以为我们提供矩形大小的方法,该矩形将包围特定的属性字符串。获取文本视图所使用的字体,创建一个字符串,作为该文本视图中内容的合理示例,然后使用该字符串来通知框架高度。 (帧高度必须比显示字符串的实际矩形大一些点。)
或者,我们可以从字体中获取各种指标,然后尝试从中计算出合理的框架。那可能行得通,也可能行不通;例如,Apple Chancery之类的字体根据要渲染的字形,它们在单词中的位置等而有很大的变化。我不知道我们可以在不确切知道要渲染的内容的情况下提前计算所需的大小。
回答
对于单行文本,使用NSTextField比使用NSTextView更为正常。
使用NSTextField,只需执行以下操作:
[textField setFont:myFont]; [textField sizeToFit];
哦,没有内置的"当前默认字体"。如果应用程序具有这样的概念,则它需要自己对其进行跟踪。字体面板不读取或者写入全局任何东西,它用于对特定的文本对象进行操作。