如何让NSTextField表现得像HTML文本?

时间:2011-02-21 21:39:41

标签: cocoa text resize nstextfield autoresize

我有一些静态文本,通常只有1行,显示在我的xib中的NSTextField中。在某些情况下,文本足够长,以保证2行,我只是希望标签垂直调整以适应它,而不给我滚动或任何其他东西。想想网页上的文字是如何表现的......这就是我想要的。我只是想让标签用不同的文字缩小,并调整其宽度。我怎样才能做到这一点?



更新
以下是目前行为方式的视频:http://screencast.com/t/4JYTv7jVG3O

请注意,当NSTextField长两行时,文本下面有一个很大的间隙。这是因为星星和按钮在框架的底部对齐,因为我必须让框架更高以容纳2条线,所以它们会留在那里。如果我能得到这个问题的答案,我会使1行文本的框架缩短,并使底部文本字段(文本较小)更高以补偿。可以完成这种浮动布局吗?

1 个答案:

答案 0 :(得分:0)

一种选择是实际使用WebView来显示您的内容。然后,您将获得您期望的行为,但需要花费一些工作来管理与控件的交互。

您需要使用WebView[webView setDrawsBackground:NO]设置为不显示背景。

您还需要使用HTML / CSS构建内容(包括星级和按钮),然后在按下按钮时使用Objective-C / JavaScript桥接器回叫您的应用程序。

有关从JavaScript调用Objective-C的更多信息是here

您可能还可以使用NSTextView并将按钮和星级评级嵌入为NSTextAttachment个对象,但这非常复杂,使用WebView会更容易。< / p>

我能看到的唯一其他选择是编写一个视图控制器,它根据容器视图的当前大小来管理控件的布局。您需要测量文本才能执行此操作,其中一种方法是使用Jerry Krinock编写的优秀NS(Attributed)String+Geometrics类别。