Ale*_*lex 5 cocoa objective-c fade nstableview nsscrollview
我正在寻找一种方法来在滚动内容时在桌面视图(和大纲视图,但我认为它将是相同的)上绘制淡入淡出效果.以下是Fantastical应用程序的示例:

此处还有QuickLook窗口上类似淡入淡出的视频.
为此,我尝试使用以下代码子类化tableview的scrollview:
#define kFadeEffectHeight 15
@implementation FadingScrollView
- (void)drawRect: (NSRect)dirtyRect
{
[super drawRect: dirtyRect];
NSGradient* g = [[NSGradient alloc] initWithStartingColor: [NSColor blackColor] endingColor: [NSColor clearColor]];
NSRect topRect = self.bounds;
topRect.origin.y = self.bounds.size.height - kFadeEffectHeight;
topRect.size.height = kFadeEffectHeight;
NSRect botRect = self.bounds;
botRect.size.height = kFadeEffectHeight;
[NSGraphicsContext saveGraphicsState];
[[NSGraphicsContext currentContext] setCompositingOperation: NSCompositeDestinationAtop];
// Tried every compositing operation and none worked. Please specify wich one I should use if you do it this way
[g drawInRect: topRect angle: 90];
[g drawInRect: botRect angle: 270];
[NSGraphicsContext restoreGraphicsState];
}
Run Code Online (Sandbox Code Playgroud)
...但这并没有消失任何东西,可能是因为在绘制实际的表格视图之前调用了它.我不知道如何做到这一点:(
顺便说一句,我想要具有此效果的tableview和outlineview都是基于视图的,并且app仅为10.7.
在Mac OS X中(因为您的问题被标记),有几个陷阱使这很困难.在具有弹性滚动的Lion上尤其如此.
我(就在今天)把我认为更好的方法放在一起比在桌子上工作或直接概述视图:一个自定义的NSScrollView子类,它将两个"淡入淡出视图"平铺在其剪辑视图顶部的正确位置.JLNFadingScrollView可以配置所需的淡入淡出高度和颜色,并且是Github上的自由/开源.请尊重许可并享受.:-)

| 归档时间: |
|
| 查看次数: |
1121 次 |
| 最近记录: |