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效果如下:

  • 相关阅读:
    date format记录
    python同时遍历两个list
    Windbg分析DMP文件
    DNS原理及其解析过程(转)
    有关正则表达式的详细内容
    sizeof _countof _tcslen的比较
    关于androidX
    UML类图
    springBoot 访问html页面遇到的坑
    hashmap 的实现原理
  • 原文地址:https://www.cnblogs.com/mazhiyong/p/2541673.html
Copyright © 2011-2022 走看看