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 がどこにも呼び出されず、プッシュする方法がわかりません。