NSButton layer.contentscenter未正确拉伸

时间:2013-12-20 21:20:14

标签: objective-c macos calayer nsbutton

我正在尝试使用此处的技术创建具有自定义背景的NSButton:http://youtu.be/7MZJxPOo_xU。除了最后的部分,他解释了如何使用self.layer.contentscenter来确保图像的边缘不会以错误的方式伸展,所以一切都很适合我。我尝试以同样的方式实现它,但它对我没有任何作用,当我发表评论时没有任何改变。我是在实施错误还是误解了这里发生了什么?这是我的代码和问题的图像。

正方形(按设计)时按钮的外观如何:

enter image description here

拉伸时的外观:(注意顶部和底部边缘如何垂直压缩,何时只能水平拉伸)

enter image description here

CustomButton.m

@implementation CustomButton

- (BOOL)wantsUpdateLayer{
    return YES;
}

- (void)updateLayer{
    self.layer.contentsCenter = CGRectMake(0.5, 0.5, 0, 0);

    if (self.state == NSOnState) {
        self.layer.contents = [NSImage imageNamed:@"buttonPressedAndSelected.png"];
    }
    else if (self.state == NSOffState){
        self.layer.contents = [NSImage imageNamed:@"buttonSelected.png"];
    }
}

@end

1 个答案:

答案 0 :(得分:1)

您的图片太大,无法按下。问题是它必须开始压缩顶部和底部,因为按钮被压缩得比实际的艺术品小。尝试将广场上的艺术品制作得更小(至少与按钮一样小)。

我发现虽然我在Mavericks上执行此操作的方法存在问题但它不希望我更改图层的contentsCenter。但是,它应该仍然有用。

不过,谢谢观看教程:)