FROM : John Stiles
DATE : Thu Jan 31 21:16:05 2008
Peter Ammon wrote:
>
> On Jan 31, 2008, at 11:56 AM, John Stiles wrote:
>
>> Peter Ammon wrote:
>>>
>>> On Jan 31, 2008, at 11:27 AM, John Stiles wrote:
>>>
>>>> I've noticed that in table views, the NSTextFieldCell has the
>>>> ability to ever-so-slightly squash its contents horizontally, to
>>>> fit inside the table cell, before eventually giving up and
>>>> truncating them with ellipses.
>>>>
>>>> Is there any way for me to programmatically do the same thing to my
>>>> own NSTextFieldCell?
>>>>
>>>> As I'm typing this, suddenly I'm thinking "maybe I could fake it by
>>>> altering the cell's bounds while leaving the frame alone"… but is
>>>> there a better way? Changing the bounds would make the text
>>>> thinner, which isn't quite the same as squeezing the letters more
>>>> tightly together.
>>>
>>> Hi John,
>>>
>>> This is called "tightening" in the API, and it's enabled by default
>>> on text fields (actually, on any control) when the line break mode
>>> is one of the three truncation line break modes in
>>> NSParagraphStyle.h. You can control the threshold between
>>> tightening and truncation with the setTighteningFactorForTruncation:
>>> method on NSMutableParagraphStyle.
>>>
>>> Hope that helps,
>>> -Peter
>> Cool!
>> Is there any way to enable this for an NSTextField in a window?
>> Someone off-list suggested using attributed strings to do this, but
>> is that the best way?
>
> Attributed strings aren't necessary, and NSTextFields do this by
> default. In IB, make an NSTextField and in the Inspector, set its
> Line Breaks mode to Truncate Tail, and make it resize with the window.
>
> Oh, it doesn't happen if the text field has key focus, so you could
> add another text field to hold the key focus for testing. If you do
> that, you should see this behavior.
Awesome. I'll give this a shot right now.
FWIW, I also experimented with setting the bounds of the cell, and this
actually worked great—better than I thought, actually. But it sounds
like I could get the behavior "for free" by just setting the text
field's tightening factor and line-break mode, so I'll try that next.
DATE : Thu Jan 31 21:16:05 2008
Peter Ammon wrote:
>
> On Jan 31, 2008, at 11:56 AM, John Stiles wrote:
>
>> Peter Ammon wrote:
>>>
>>> On Jan 31, 2008, at 11:27 AM, John Stiles wrote:
>>>
>>>> I've noticed that in table views, the NSTextFieldCell has the
>>>> ability to ever-so-slightly squash its contents horizontally, to
>>>> fit inside the table cell, before eventually giving up and
>>>> truncating them with ellipses.
>>>>
>>>> Is there any way for me to programmatically do the same thing to my
>>>> own NSTextFieldCell?
>>>>
>>>> As I'm typing this, suddenly I'm thinking "maybe I could fake it by
>>>> altering the cell's bounds while leaving the frame alone"… but is
>>>> there a better way? Changing the bounds would make the text
>>>> thinner, which isn't quite the same as squeezing the letters more
>>>> tightly together.
>>>
>>> Hi John,
>>>
>>> This is called "tightening" in the API, and it's enabled by default
>>> on text fields (actually, on any control) when the line break mode
>>> is one of the three truncation line break modes in
>>> NSParagraphStyle.h. You can control the threshold between
>>> tightening and truncation with the setTighteningFactorForTruncation:
>>> method on NSMutableParagraphStyle.
>>>
>>> Hope that helps,
>>> -Peter
>> Cool!
>> Is there any way to enable this for an NSTextField in a window?
>> Someone off-list suggested using attributed strings to do this, but
>> is that the best way?
>
> Attributed strings aren't necessary, and NSTextFields do this by
> default. In IB, make an NSTextField and in the Inspector, set its
> Line Breaks mode to Truncate Tail, and make it resize with the window.
>
> Oh, it doesn't happen if the text field has key focus, so you could
> add another text field to hold the key focus for testing. If you do
> that, you should see this behavior.
Awesome. I'll give this a shot right now.
FWIW, I also experimented with setting the bounds of the cell, and this
actually worked great—better than I thought, actually. But it sounds
like I could get the behavior "for free" by just setting the text
field's tightening factor and line-break mode, so I'll try that next.
| Related mails | Author | Date |
|---|---|---|
| John Stiles | Jan 31, 20:27 | |
| Peter Ammon | Jan 31, 20:53 | |
| glenn andreas | Jan 31, 20:55 | |
| John Stiles | Jan 31, 20:56 | |
| Peter Ammon | Jan 31, 21:12 | |
| John Stiles | Jan 31, 21:16 | |
| John Stiles | Jan 31, 22:37 | |
| Aki Inoue | Jan 31, 22:51 | |
| John Stiles | Jan 31, 22:54 |






Cocoa mail archive

