2013-02-04 13 views

Odpowiedz

4

Nie. NSImage nie zawiera takich sprytów. Będziesz musiał sam posiekać, zmienić rozmiar i ponownie złożyć obraz.

Może zajmiesz się tworzeniem podklasy NSCustomImageRep, która to implementuje, którą możesz następnie wykorzystać do implementacji wersji OS X tej samej metody.

+0

Od 10.10 może mieć ['capInsets'] (https://developer.apple.com/reference/appkit/nsimage/1520012-capinsets) var. Wydaje się, że nigdzie go nie używa, ale tam jest. –

4

Można użyć [NSImage drawAtPoint], aby zamiast coś takiego:

@implementation NSImage (CapInsets) 

- (void)drawImageWithLeftCapWidth:(NSInteger)left topCapHeight:(NSInteger)top destRect:(NSRect)dstRect 
{ 
    NSSize imgSize = self.size; 
    [self drawAtPoint:dstRect.origin fromRect:NSMakeRect(0, 0, left, top) operation:NSCompositeSourceOver fraction:1]; 
    [self drawInRect:NSMakeRect(left, 0, dstRect.size.width-2*left, top) fromRect:NSMakeRect(left, 0, imgSize.width-2*left, top) operation:NSCompositeSourceOver fraction:1]; 
    [self drawAtPoint:NSMakePoint(dstRect.origin.x+dstRect.size.width-left, dstRect.origin.y) fromRect:NSMakeRect(imgSize.width-left, 0, left, top) operation:NSCompositeSourceOver fraction:1]; 
} 

@end 
2

NSImage zrobił uzyskać nieznaczną poprawę w 10.10 (Yosemite). NSImage ma teraz właściwość:

@property NSEdgeInsets capInsets 

Ta właściwość umożliwia ustawienie wypustek czapek w taki sam sposób, jak w systemie iOS. Jeśli zadzwonisz pod numer [image drawInRect:rect], uwzględnimy te wstawki. Pamiętaj, że działa to tylko w systemach z wersją 10.10 lub nowszą; w starszych systemach po prostu rozciągnie obraz.

Powiązane problemy