【问题标题】:How to make a rounded-corner WKWebView on OS X?如何在 OS X 上制作圆角 WKWebView?
【发布时间】:2015-01-09 19:42:23
【问题描述】:

如何在 OS X 上制作圆角 WKWebView?

以前用NSWebView,我们可以通过层来做:

webView.wantsLayer = YES;
webView.layer.cornerRadius = 5;
webView.layer.masksToBounds = YES;

但是在 WKWebView 上它不再起作用了。

【问题讨论】:

    标签: objective-c cocoa calayer appkit wkwebview


    【解决方案1】:

    图层不会对其下方的细节进行隐式屏蔽。要使角落被遮罩,您应该在代码中添加以下内容:

    webView.layer.masksToBounds = YES;
    

    来自CALayer的文档:

    当此属性的值为YES 时,Core Animation 会创建一个隐式剪切蒙版,该蒙版匹配图层的边界并包含任何角半径效果。

    此属性的默认值为NO

    我使用了以下简单的示例代码,它显示了圆角:

    - (void)windowDidLoad {
        [super windowDidLoad];
        WKWebView *wv = [[WKWebView alloc] initWithFrame:self.containerView.bounds
                                           configuration:[[WKWebViewConfiguration alloc] init]];
        wv.autoresizingMask = NSViewWidthSizable | NSViewHeightSizable;
        [self.containerView addSubview:wv];
        wv.wantsLayer = YES;
        wv.layer.cornerRadius = 50;
        wv.layer.masksToBounds = YES;
    
        [wv loadRequest:[[NSURLRequest alloc] initWithURL:[NSURL URLWithString:@"http://stackoverflow.com"]]];
    }
    

    【讨论】:

    • 对不起,我错过了问题中的那一行。它适用于 NSWebView 但不适用于 WKWebView。
    • 我添加了一些我用来测试它的代码,它在 OSX Yosemite 上运行良好 - 显示(在示例中为巨大的)圆角。我不明白你在哪里遇到问题。
    • 感谢代码!原来我犯了一些错误,所以我没有注意到圆角。
    • 但是网页视图仍然有白色背景。我可以让它透明吗?
    • 你说的是内容还是圆角半径?角落继承了视图下方的颜色(因此,如果它是普通窗口,则继承窗口的背景颜色)。
    猜你喜欢
    • 2011-10-25
    • 2021-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-25
    • 2011-08-07
    • 2013-01-04
    相关资源
    最近更新 更多