在UIKit
我們有- (UIImage *)resizableImageWithCapInsets:(UIEdgeInsets)capInsets
。resizableImageWithCapInsets NSImage?
AppKit
是否有類似的創建tileable NSImage
?
在UIKit
我們有- (UIImage *)resizableImageWithCapInsets:(UIEdgeInsets)capInsets
。resizableImageWithCapInsets NSImage?
AppKit
是否有類似的創建tileable NSImage
?
沒有。 NSImage不包含這樣的智慧。您將不得不自己切割,調整大小和重新組裝圖像。
您可能會考慮製作一個NSCustomImageRep子類來實現此目的,然後您可以使用該子類來實現相同方法的OS X版本。
您可以使用[NSImage中drawAtPoint],而不是像這樣:
@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中的確在10.10(優勝美地)得到輕微改善。 NSImage現在有以下屬性:
@property NSEdgeInsets capInsets
有了這個屬性,你可以像在iOS中一樣設置cap的insets。如果您致電[image drawInRect:rect]
,它會考慮到這些插頁。請注意,這隻適用於運行10.10或更高版本的系統;在較舊的系統上,它將簡單地拉伸圖像。
從10.10開始,它可以有一個['capInsets'](https://developer.apple.com/reference/appkit/nsimage/1520012-capinsets)var。它似乎沒有在任何地方使用,但它在那裏。 –