2013-03-18 47 views
0

我的用户界面存在问题。我想做一些控制(即只读NSTextField(又名一个多行标签)和一个NSTokenField)显示它们包含的所有文本,这些文本可能会有很大差异(对很多行很少有文字)。将控件调整为其内容

我以为嵌入他们NSScrollView内的,但也许这是不够的,因为我没能达到我的目标......

有人可以帮助我在这个问题上?

谢谢

编辑:我添加了一个图像。

UI

也许滚动条是不是正确的解决方案。 正如你在图像中看到的,我有一个“简单的”attribute1字段,然后是包含大量文本的第二个字段(并且还有更多需要在其中显示的文本)以及一个有很多标记的字段的文字。

我看到两个选择(即使我不知道如何实现它们尚未..):

  • 制作领域发展的高度(但当时我只是推迟问题:如果什么他们变得非常大,窗口也需要增长?
  • 将它们嵌入到一个滚动视图中(并且使滚动条在这种情况下可见,所以用户知道还有更多需要阅读的内容)。但只是将字段嵌入到scrollview中并不能解决问题,所以我在问是否需要以编程方式实现某些内容(并且子类化为NSView)...

EDIT2: 仍然有问题: 如果我设定为约束条件“大小> =我最小值”,然后在文本框正常生长。当然没有滚动视图。如果,那么,我试着嵌入它在NSScrollView文本再次剪辑(和滚动视图不滚动)...

编辑3:我附加了一个示例项目,其中我试图显示问题(没有我主要的其他所有内容项目) http://www.filedropper.com/testtextfield

+0

如果你可以粗略地显示一个图表或图像你到底要 – 2013-03-18 10:57:14

+0

@AnoopVaidya我编辑发布图片和更好地解释我的问题... – Francesco 2013-03-18 11:17:14

+0

因此,在所有情况下,Attr1,Attr2,Attr3都将显示为一个大集合? – 2013-03-18 11:30:01

回答

0

我解决我的问题(以及..它是不是一个真正的解决方案的更多解决方法):

  • 因为我使用了NSTextView标签,只读,不可选择的,用透明背景(所以它看起来像只读NSTextField,但带有滚动条)。
  • 对于令牌字段我使用SSYTokenField(我在这里找到:https://github.com/jerrykrinock/ClassesObjC)..对于我当前的要求(只读和字段的大小决定在窗口创建)它的工作..我不知道这是否可以在更复杂的情况下工作。 顺便说一句:我看到,可可自动布局仍然有一些与NSScrollView的问题(嗯..它是相反的:D)。我有一个旧的支柱和弹簧(自动调整面罩)进行测试,看看是否我还有问题或不..
1

您的要求是制作一个具有NSTextField和NSTokenField的自定义控件。

你可以做的是创建一个NSView并将它们嵌入到它们中,并在NSScrollView中显示它们。

0

根据你想要做什么,Anoop的建议可能是好的,将它们嵌入在NSScrollView内的NSView。如果您希望滚动视图中的每个字段与滚动视图具有相同的宽度,但是会动态更改它们的高度,但您需要在滚动视图上侦听NSViewFrameDidChangeNotification,并更改preferredMaxLayoutWidth中的每一个NSTextField s和NSTokenField以匹配滚动视图的宽度。我可能会建议继承包含NSView并让它监听通知。

编辑:

我不知道你正在运行到这个具体是什么问题,但在这里就是我将打破问题了下来:

1)创建的NSView一个子类是你的容器视图。

2)嵌入在一个实例文本视图在你的容器视图,并嵌入在NSScrollView

3)的文本视图应该有开头和结尾的空间限制其上海华盈(可能为0即容器的观点,但无论你为什么工作)以及相互之间的顶部和底部限制以及超级视图将它们放入堆叠配置中。

4)在容器视图子类中,在其包含滚动视图上注册NSViewFrameDidChangeNotification,并在每个文本字段上接收到通知时,-setPreferredMaxLayoutWidth:与NSScrollView的宽度匹配。

+0

我编辑我的问题 – Francesco 2013-03-18 19:29:20

+0

你可以尝试,并更明确地说你在做什么?我不知道你在给什么观点增加约束。 – eyebrowsoffire 2013-03-18 20:19:15

+0

也许我的英语不太好..我认为这是一个简单的事情来实现..我想要做的是在标签中显示大量的文字。但是我不能让标签变得太多,所以我认为最好的办法是将它嵌入到滚动视图中。因此,例如少于2行的标签显示为“直接”。随着更多的文本,滚动条出现,用户可以滚动文本... – Francesco 2013-03-20 11:35:12

相关问题