gpt4 book ai didi

cocoa - 如何让 NSScrollView 尊重剪切路径

转载 作者:行者123 更新时间:2023-12-03 16:23:27 24 4
gpt4 key购买 nike

我正在尝试制作一个带有剪角的 NSScrollView,类似于 Twitter 应用程序:

enter image description here

我有一个 NSScrollView 子类,我添加了以下代码:

- (void)drawRect:(NSRect)dirtyRect {
NSBezierPath *pcath = [NSBezierPath bezierPathWithRoundedRect:[self bounds] xRadius:kDefaultCornerRadius yRadius:kDefaultCornerRadius];
[path setClip];

[super drawRect:dirtyRect];
}

我期望 NSScrollView 的内容具有圆角,但它不尊重剪切路径。我怎样才能做到这一点?




更新和澄清
我知道如何制作自定义 NSScroller,我知道如何使其透明覆盖。我所问的只是如何使 NSSCrollView 剪掉它的角,包括它包含的所有内容。 NSScrollView 位于 NSView 内,其背景可能会发生变化,这意味着无法使用 View 覆盖来伪造圆角。

最佳答案

经过一番摆弄,我刚刚发现 NSScrollView 可以通过简单地给它一个背衬层并设置该层的圆角半径提供来使其具有圆角也对其内部 NSClipView 执行相同的操作。两者都是必需的,现在这是有意义的,因为剪辑 View 实际上为 NSScrollView 的文档 View 提供了可 window 口。

NSScrollView * scrollView = ...;

// Give the NSScrollView a backing layer and set it's corner radius.
[scrollView setWantsLayer:YES];
[scrollView.layer setCornerRadius:10.0f];

// Give the NSScrollView's internal clip view a backing layer and set it's corner radius.
[scrollView.contentView setWantsLayer:YES];
[scrollView.contentView.layer setCornerRadius:10.0f];

关于cocoa - 如何让 NSScrollView 尊重剪切路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5268467/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com