【问题标题】:Shadow Effect not working with Resizable NSView阴影效果不适用于可调整大小的 NSView
【发布时间】:2016-08-12 06:06:18
【问题描述】:

我已经为我的 NSView 编写了下面的阴影效果代码。

    [_nsview setWantsLayer:YES];
    _nsview.layer.masksToBounds = NO;
    _nsview.layer.cornerRadius = 5;
    _nsview.layer.shadowOffset = CGSizeMake(.3f, -.3f);
    _nsview.layer.shadowRadius = 10;
    _nsview.layer.shadowOpacity = 0.20; 
    _nsview.layer.shadowColor = [NSColor blackColor].CGColor;

_nsview 是那个 NSView 的出口。上面的代码完美地工作并给出了阴影效果......但问题是在调整_nsview阴影后隐藏了。

【问题讨论】:

    标签: macos cocoa


    【解决方案1】:

    改用 NSShadow:

        [_childView setWantsLayer:YES];
        _childView.layer.backgroundColor = [NSColor whiteColor].CGColor;
        _childView.layer.cornerRadius = 5;
    
        NSShadow *dropShadow = [[NSShadow alloc] init];
        [dropShadow setShadowColor:[NSColor colorWithWhite:0.1 alpha:0.6]];
        [dropShadow setShadowOffset:NSMakeSize(0, -5)];
        [dropShadow setShadowBlurRadius:5];
        _childView.shadow = dropShadow;
    

    【讨论】:

      【解决方案2】:

      除非您使用的是 layer-hosting view(注意:不同于 layer-backed view),那么您应该假设NSView 可以在幕后随时更改图层属性。阴影和变换是在开发人员控制之外更改的最常见属性。

      这里有一些有用的阅读:

      https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/CoreAnimation_guide/SettingUpLayerObjects/SettingUpLayerObjects.html

      https://www.objc.io/issues/14-mac/appkit-for-uikit-developers/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-11
        • 1970-01-01
        相关资源
        最近更新 更多