。私のカスタムNSTableCellViewのdrawRect:メソッドでは、もちろん、囲むNSClipViewを基準にしたビューの位置を調べるのは難しいかもしれません。関連コード:
- (void)drawRect:(NSRect)dirtyRect {
// _isGroupView is a member variable which has to be set previously
// (usually in setObjectValue:) in order for us to know if we're a
// group row or not.
if (_isGroupView) {
// This is the nasty party:
NSClipView *clipView = (NSClipView*)self.superview.superview.superview;
if (![clipView isKindOfClass:[NSClipView class]]) {
NSLog(@"Error: something is wrong with the scrollbar view hierarchy.");
return;
}
NSRect clipRect = [clipView documentVisibleRect];
CGFloat distanceToTop = self.superview.frame.origin.y - clipRect.origin.y;
if (self.superview.frame.origin.y - clipRect.origin.y < self.frame.size.height) {
// This means, that this NSTableCellView is currently pushing the
// view above it out of the frame.
CGFloat alpha = distanceToTop/self.frame.size.height;
NSColor *blendColor = [[NSColor blackColor] blendedColorWithFraction:alpha ofColor:[NSColor whiteColor]];
// ...
// do stuff with blendColor
// ...
// blendColor should now be the appropriate color for the wanted
// "fade in" effect.
//
}
}
}
私はこれが意味をなさないことを望みます。すべてのヒントはまだ評価されています!
乾杯、 マイケル
私は任意のFinderのリストビューに全くフェージング表示されません。列見出しを持つ標準の 'NSOutlineView'があります。あなたは何を意味するのスクリーンショットを投稿できますか? –
ロブ、あなたの答えをありがとう。私はオリジナルの質問を編集しました。 CTRL-CMD-1からCTRL-CMD-7を押す。これはAFAIKで、ライオンでのみ利用可能です。 –