サブクラスNSImageViewがあり、丸みを帯びたコーナーで境界線を描きたい。それは動作しますが、私は画像コーナーも切り取る必要があります。私はボーダー/角の描画にこのコードを作成しているNSImageView丸みのあるコーナー+ストローク
:
私のスクリーンショットを参照してください。
- (void)drawRect:(NSRect)dirtyRect
{
[super drawRect:dirtyRect];
NSColor *strokeColor;
if(self.isSelected)
strokeColor = [NSColor colorFromHexRGB:@"f9eca2"];
else
strokeColor = [NSColor colorFromHexRGB:@"000000"];
[strokeColor set];
[[NSBezierPath bezierPathWithRoundedRect:NSInsetRect(dirtyRect, 1, 1) xRadius:5 yRadius:5] stroke];
}
イメージクリップを作成するにはどうすればよいですか?
EDIT:
まあ、私はそれを固定し、しかし、私はそれを行うにはその醜いように感じます。何でも賢い?
NEW CODE:
- (void)drawRect:(NSRect)dirtyRect
{
NSBezierPath *path = [NSBezierPath bezierPathWithRoundedRect:NSInsetRect(dirtyRect, 2, 2) xRadius:5 yRadius:5];
[path setLineWidth:4.0];
[path addClip];
[self.image drawAtPoint: NSZeroPoint
fromRect:dirtyRect
operation:NSCompositeSourceOver
fraction: 1.0];
[super drawRect:dirtyRect];
NSColor *strokeColor;
if(self.isSelected)
{
strokeColor = [NSColor colorFromHexRGB:@"f9eca2"];
}
else
strokeColor = [NSColor colorFromHexRGB:@"000000"];
[strokeColor set];
[NSBezierPath setDefaultLineWidth:4.0];
[[NSBezierPath bezierPathWithRoundedRect:NSInsetRect(dirtyRect, 2, 2) xRadius:5 yRadius:5] stroke];
}
'NSImageView'は' clipsToBounds'プロパティを持っていない - それはNSないUI ImageViewのです。 – SteveF
なぜstackoverflow上のすべての2番目の人は、objective-cコード== iOSを想定していますか? – strange
AppKitでもclipToBoundsプロパティを持っている画像ビューのレイヤーについて話しているのを見ると、慎重に答えを読んでください。編集: ' - [NSView setWantsLayer:YES] 'を使用してレイヤーを有効にすることを忘れないでください。 – dvkch