0

Mac で resizableImageWithCapInsets (iOS のように) を実行しようとしています。

    // right bubble
    NSLog(@"==================== OLD VALUES ==============");
    NSLog(@"size->%@",NSStringFromSize(size));
    NSLog(@"cellView.frame->%@",NSStringFromRect(cellView.frame));

    NSLog(@"message.frame->%@",NSStringFromRect(cellView.message.frame));
    NSLog(@"background.frame->%@",NSStringFromRect(cellView.background.frame));

    cellView.background.frame =  CGRectMake(cellView.frame.size.width - size.width,
                                            - size.height + cellView.date.frame.size.height * 1.8, size.width, size.height);


    necessaryBackgroundImage = [[NSImage imageNamed:@"OutgoingMessageBuble.png"] stretchableImageWithLeftCapWidth:20 topCapHeight:15];

    cellView.message.frame = CGRectMake(cellView.frame.size.width - size.width,
                                        - size.height + cellView.date.frame.size.height * 1.8, size.width, size.height);

    NSLog(@"==================== NEW VALUES ==============");
    NSLog(@"message.frame->%@",NSStringFromRect(cellView.message.frame));
    NSLog(@"background.frame->%@",NSStringFromRect(cellView.background.frame));
    NSLog(@"necessaryBackgroundImage.size->%@",NSStringFromSize(necessaryBackgroundImage.size));
   cellView.background.image = necessaryBackgroundImage;

ここから NSImage サブクラスを試します: https://github.com/beefon/Mac---Stretchable-NSImage/blob/master/README

しかし、それは成功ではありません:

ここに画像の説明を入力

クラスは常に間違ったサイズの画像を返します:

> 2012-11-22 01:02:30.009[37363:303] necessaryBackgroundImage.size->{43,
> 32} 2012-11-22 01:02:30.004[37363:303]
> necessaryBackgroundImage.size->{43, 32}

私は必要なフレームとしてサイズの画像を期待しています:

> 2012-11-22 01:02:30.003[37363:303] background.frame->{{50.6875,
> -115.19999999999999}, {265.3125, 162}}

説明してください、どこが間違っていますか? コード スニペットは、NSDrawNinePartImage を使用する必要があることを理解していますが、長い道のりは避けたほうがよいでしょう。また、サブクラス化された NSImage の drawInRect がどこにも呼び出されず、プッシュする方法がわかりません。

4

1 に答える 1

0

Stretchable-NSImage は画像を変更しませんでしたが、drawRect

于 2013-05-22T10:10:20.517 に答える