NSSegmentedControlに問題があります。 私はグラデーションを影で描くカスタムビューを持っています。 図面は大丈夫ですが、NSSegmentedControlをその中に配置すると、セグメント化されたコントロールのアルファ値が低いように、カスタムビューの背景がセグメント化されたコントロールを照らしています。バックグラウンドでのカスタムビューでスーパービューが描画されるときのNSSegmentedControlの奇妙な描画動作
:
背景にカスタムビューがない場合:ここで
は、問題を示し絵は、ある
あなたが左に見ることができるように最初の画像の上隅では、セグメント化されたコントロールが適切に描画されません。ここ は、カスタムビューからのdrawRectメソッドです:
- (void)drawRect:(NSRect)dirtyRect {
NSShadow *shadow = [[NSShadow alloc] init];
[shadow setShadowOffset:NSMakeSize(0.0, -6.0)];
[shadow setShadowBlurRadius:3.0];
[shadow setShadowColor:[[NSColor blackColor] colorWithAlphaComponent:0.3]];
[shadow set];
NSGradient *gradient = [[NSGradient alloc] initWithColorsAndLocations:[NSColor colorWithDeviceWhite:0.8 alpha:1.0],(CGFloat)0.0,[NSColor colorWithDeviceWhite:0.65 alpha:1.0],(CGFloat)0.5,[NSColor colorWithDeviceWhite:0.3 alpha:1.0],(CGFloat)0.5,[NSColor colorWithDeviceWhite:0.5 alpha:1.0],(CGFloat)1.0, nil];
[gradient drawInRect:self.bounds angle:90];
NSBezierPath *bezierPath = [NSBezierPath bezierPath];
[bezierPath moveToPoint:NSMakePoint(0, 0)];
[bezierPath lineToPoint:NSMakePoint(-self.bounds.size.height, 0)];
[bezierPath lineToPoint:NSMakePoint(-self.bounds.size.height, -self.bounds.size.width)];
[bezierPath lineToPoint:NSMakePoint(0, -self.bounds.size.width)];
[[NSColor whiteColor] set];
[bezierPath stroke];
}
あなたはこれで私を助けることができますか? この問題を解決する方法がわかりません。
すべて| Gro ... | Fav ...コントロール?私は問題が何であるか理解できません。 – paulmelnikow
すみません。私は少し不正解でした。前向きにセグメント化されたコントロール - 最初の画像にこの醜い勾配を持つべきではありません。 –
だから、あなたは、ツールバーに適用しているグラデーションがバックフォワードと+ボタンに滲み出るのはなぜですか? – paulmelnikow