objective-c – NSTableViewNSOutlineView顶部和底部的淡入淡出效果

objective-c – NSTableViewNSOutlineView顶部和底部的淡入淡出效果,第1张

概述我正在寻找一种方法来在滚动内容时在桌面视图(和大纲视图,但我认为它将是相同的)上绘制淡入淡出效果.以下是 Fantastical应用程序的示例: 也是QuickLook windows here上类似淡入淡出的视频. 为此,我尝试使用以下代码子类化tableview的scrollview: #define kFadeEffectHeight 15@implementation FadingSc 我正在寻找一种方法来在滚动内容时在桌面视图(和大纲视图,但我认为它将是相同的)上绘制淡入淡出效果.以下是 Fantastical应用程序的示例:

也是QuickLook windows here上类似淡入淡出的视频.

为此,我尝试使用以下代码子类化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];}

…但这并没有消失任何东西,可能是因为在绘制实际的表格视图之前调用了它.我不知道如何做到这一点:(

顺便说一句,我想要具有此效果的tablevIEw和outlinevIEw都是基于视图的,并且app仅为10.7.

解决方法 在Mac OS X中(因为您的问题被标记),有几个陷阱使这很困难.在具有d性滚动的lion上尤其如此.

我(就在今天)把我认为更好的方法放在一起比在桌子上工作或直接概述视图:一个自定义的NSScrollVIEw子类,它将两个“淡入淡出视图”平铺在其剪辑视图顶部的正确位置. JLNFadingScrollView可配置所需的淡入淡出高度和颜色,并且是Github上的自由/开源.请尊重许可并享受. 总结

以上是内存溢出为你收集整理的objective-c – NSTableView / NSOutlineView顶部和底部的淡入淡出效果全部内容,希望文章能够帮你解决objective-c – NSTableView / NSOutlineView顶部和底部的淡入淡出效果所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1005475.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存