zoukankan      html  css  js  c++  java
  • NSWindow如何实现圆角

    分两步走:
    1.子类化NSWindow,主要是重载了下面这个函数
    - (id)initWithContentRect:(NSRect)contentRect
                    styleMask:(NSUInteger)aStyle
                      backing:(NSBackingStoreType)bufferingType
                        defer:(BOOL)flag {
        self = [super initWithContentRect:contentRect styleMask:NSBorderlessWindowMask backing:NSBackingStoreBuffered defer:NO];
        if (self != nil) {
            [self setOpaque:NO];
            [self setBackgroundColor:[NSColor clearColor]];
        }
        return self;
    }

    2.子类化NSWindow的view,重载drawRect,其中的圆角半径和背景颜色自己可以调整
    - (void)drawRect:(NSRect)dirtyRect
    {
        [NSGraphicsContext saveGraphicsState];

        NSRect rect = [self bounds];
        NSBezierPath *path = [NSBezierPath bezierPathWithRoundedRect:rect xRadius:5 yRadius:5];
        [path addClip];
        
        [[NSColor controlColor] set];
        NSRectFill(dirtyRect);
        
        [NSGraphicsContext restoreGraphicsState];
        
        [super drawRect:dirtyRect];
    }

    实现demo效果如下:

  • 相关阅读:
    取消select默认样式
    浏览器私有前缀
    兼容ie的background-size: cover;
    关于字体
    lorem 快速生成x个单词
    bash常见命令
    rgba透明的兼容处理
    JDK源码分析(10) CopyOnWriteArrayList
    JDK源码分析(9) LinkedHashMap
    JDK源码分析(8) StringBuffer & StringBuilder
  • 原文地址:https://www.cnblogs.com/mazhiyong/p/2541673.html
Copyright © 2011-2022 走看看