2013-03-18 183 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