开发者

Showing image before text in NSButtonCell in NSMatrix

开发者 https://www.devze.com 2023-01-12 11:55 出处:网络
I am displaying buttons in NSMatrix. My requirement is: to change color of button title and place an image at beginning of title, when certain condition is satisfied.

I am displaying buttons in NSMatrix.

My requirement is:

to change color of button title and place an image at beginning of title, when certain condition is satisfied.

To do so, I used following code:

// setting  attributed text
            NSAttributedString *selectedCellAttribute;

            NSFont *selectedCellFont = [NSFont fontWithName:@"Lucida Grande" size:11];
            NSColor *selectedCellColor = [NSColor redColor];
            NSMutableParagraphStyle *style = [[NSParagraphStyle defaultParagraphStyle] mutableCopy];
            [style setAlignment:NSCenterTextAlignment];

            // setting image
            NSTextAttachment *imageAttachment = [[NSTextAttachment alloc] init];
            NSCell *cell = [imageAttachment attachmentCell];
            [cell setImage:[NSImage imageNamed:@"caution_small.png"]];

            NSDictionary *selectedCellDictionary = [NSDictionary dictionaryWithObjectsAndKeys:imageAttachment,NSAttachmentAttributeName,selectedCellFont,NSFontAttributeName,selectedCellColor,NSForegroundColorAttributeName,style,NSParagraphStyleAttributeName,nil];

            // recognizing cell

            NSButtonCell *associatedCell = [associatesMatrix cellAtRow:0 column:2];
            selectedCellAttribute = [[NSAttributedString alloc] initWithString:[associatedCell title] attributes:selectedCellDictionary];
            [associatedCell setAttributedTitle:selectedCellAttribute];

Although above code is showing change in color of title, it is showing no image placed in beginning of 开发者_StackOverflow中文版title :(

Can anyone suggest me where I may be wrong or some other method to implement my requirements?

EDIT:

At line:

NSCell *cell = [imageAttachment attachmentCell];

it is giving this warning when compiled:

type 'id <NSTextAttachmentCell>' does not conform to 'NSCopying" protocol.

Thanks,

Miraaj


You've set the attachment for the entire string. What you need to do is prefix the string with NSAttachmentCharacter, and set the attachment only for that section of the string.

You may want to put a space between the NSAttachmentCharacter and your actual text. Only the NSAttachmentCharacter should have the attachment attribute.

0

精彩评论

暂无评论...
验证码 换一张
取 消