簡體   English   中英

NSButton 動態包裝標題

[英]NSButton wrap title dynamically

我想要完成的事情:我需要一個帶有標題文本的復選框,該復選框根據父視圖建立的動態寬度在多行上動態換行和中斷。 我需要一個可以在 IB 中使用的解決方案,它會在運行時顯示在那里。 我正在使用 XCode 13.1,在針對 MacOS 的 XIB 文件中工作。

我在做什么:我在 IB 中創建了一個 NSButton。 在屬性檢查器中,我將其樣式設置為Check ,在“控制”下,我為“換行符”選擇了自動Word Wrap行,最后我設置了一個很長的文本作為標題,例如Asd Asd Asd lit tle words and many of them asd asd lit tle ones

發生了什么:當按上述方式設置按鈕(案例 1)並縮小其寬度時,它將在 IB 中和運行時顯示,如下所示:

標題未正確換行

當通過按Option + Enter案例 2 ,在“它們”之后)按照 類似問題中的建議手動向標題添加換行符時,標題開始正確換行並生成所有其他必要的中斷:

標題正確換行

但是,此解決方案不適用於我的情況,因為它僅適用於 static 寬度,但我的復選框需要如上所述動態調整其寬度。

如果沒有額外的手動換行符,最有趣的是,顯然復選框已經根據標題的新包裝高度做出反應並更改其 position 而標題文本本身只是被控件的邊界剪裁而不是顯示在一個包裝中時尚。

我的期望:我希望標題在案例 1 中換行。因為它沒有:這是錯誤還是功能? 如何使案例 1 工作並根據按鈕的長度和寬度使標題動態換行? 我只需要在我錯過的檢查器中設置另一個屬性嗎? 還是只有程序化解決方案?

要回答為什么我不使用適當短的 label 的問題:別問我,我只是遵循規范和要求的開發人員,不幸的是,我對這里的文本長度沒有意見.

這個答案的功勞歸功於@Willeke的評論:“AppKit 不支持多行復選框。” 情況 1 中復選框的有趣行為表明其他情況似乎只是一個小故障或錯誤。

我最終得到了什么:我選擇了一種解決方法。 我在多行標簽旁邊放置了一個復選框按鈕(在 IB 中使用 Image Position“僅圖像”),將兩者放在自定義視圖中,添加必要的約束。 通過一些定位調整,我知道有一個看起來完全像單行復選框的解決方案,我可以在 IB 中復制粘貼,並通過自動布局解決 - 在 IB 中和運行時 - 無需任何額外代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM