W UIKit
mamy - (UIImage *)resizableImageWithCapInsets:(UIEdgeInsets)capInsets
.resizableImageWithCapInsets for NSImage?
Czy jest coś podobnego w AppKit
w tworzeniu taflowy NSImage
?
W UIKit
mamy - (UIImage *)resizableImageWithCapInsets:(UIEdgeInsets)capInsets
.resizableImageWithCapInsets for NSImage?
Czy jest coś podobnego w AppKit
w tworzeniu taflowy NSImage
?
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.
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
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.
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. –