代码之家  ›  专栏  ›  技术社区  ›  BadPirate

NSbutton,具有可变尺寸宽度、圆角

  •  5
  • BadPirate  · 技术社区  · 15 年前

    创建具有自定义背景图像的nsbutton的最佳方法是什么?该图像可以具有可变宽度,而不会使角边框看起来拉伸?我知道使用uibutton有很多方便的方法: http://jainmarket.blogspot.com/2009/04/create-uibuttonbutton-with-images.html 但我在nsbutton中没有看到类似的东西。

    4 回复  |  直到 15 年前
        1
  •  7
  •   BadPirate    15 年前

    我需要有一个自定义的按钮背景,这是我如何做到的。我做了一个nsbutton子类和overrode drawrect方法:

    - (void)drawRect:(NSRect)dirtyRect
    {
        // My buttons don't have a variable height, so I make sure that the height is fixed
        if (self.frame.size.height != 22) {
            self.frame = CGRectMake(self.frame.origin.x, self.frame.origin.y, self.frame.size.width,
                                    22.0f);
        }
        // 
        switch (self.state) {
                // Onstate graphics
            case NSOnState:
                NSDrawThreePartImage(self.bounds, 
                                     [NSImage imageNamed:@"btnmain_lb_h.png"], [NSImage imageNamed:@"btnmain_bg_h.png"], [NSImage imageNamed:@"btnmain_rb_h.png"],
                                     NO, NSCompositeSourceAtop, 1.0, NO);
                // Offstate graphics
            default:
            case NSOffState:
                NSDrawThreePartImage(self.bounds, 
                                     [NSImage imageNamed:@"btnmain_lb.png"], [NSImage imageNamed:@"btnmain_bg.png"], [NSImage imageNamed:@"btnmain_rb.png"],
                                     NO, NSCompositeSourceAtop, 1.0, NO);
                break;
        }
    
        [super drawRect:dirtyRect];
    }
    

    然后我可以使用InterfaceBuilder放置按钮,为了获得自定义图形,我只需要将类更改为新的子类。

        2
  •  2
  •   martyglaubitz    12 年前

    这对我来说非常好:

    [self.addBuddyCommitButton.cell setBezelStyle:NSRoundedBezelStyle];
    
        3
  •  1
  •   Philip Regan    15 年前

    NSButton 背景图像的方便方法与 UIButton (这很奇怪,希望苹果能弥补这一差距)。你需要创建一个自定义按钮我的子类 NSView 并自己处理可变宽度和转角。我不认为这会很容易,但我也不认为这会非常困难。

        4
  •  0
  •   Matt Cooper    11 年前

    此视频解释了一种看似简单的方法,只需要按钮的一个图像: http://youtu.be/7MZJxPOo_xU

    推荐文章