如何为自定义类型UIButton设置矩形边框

时间:2009-05-12 19:01:07

标签: iphone objective-c cocoa-touch

我正在尝试将图像设置为自定义UIButton的背景。我能够在界面构建器中为“圆角矩形”UIButton设置背景图像,但现在边框已经消失。有没有办法保留边界?另外,我想让边框显示为矩形而不是圆角。

6 个答案:

答案 0 :(得分:43)

    #import <QuartzCore/QuartzCore.h> // don't forget to add this in your file
    CALayer * layer = [yourUIButton layer];
    [layer setMasksToBounds:YES];
    [layer setCornerRadius:0.0]; //when radius is 0, the border is a rectangle
    [layer setBorderWidth:1.0];
    [layer setBorderColor:[[UIColor grayColor] CGColor]];

我知道这是一个老问题,但我仍然想在这里发表我的答案。因为我一直在寻找答案,但这让我自己很容易解决。

答案 1 :(得分:17)

查看cornerRadius的{​​{1}},borderWidthborderColor属性。这些属性是iPhone OS 3.0的新功能。

您可能希望继承CALayer,然后在构造函数中设置这些属性。您的按钮具有图层属性,您可以访问该属性来设置这些边框属性。

以下是一个例子:

UIButton

答案 2 :(得分:8)

您还可以在IB中使用“用户定义的运行时属性”来设置圆角,如下图所示。

http://i.stack.imgur.com/uBkuB.png

答案 3 :(得分:7)

我想补充一下南石和乔纳森提供的答案。

要访问图层的bordercornerRadius属性,首先需要导入QuartzCore框架。

#import <QuartzCore/QuartzCore.h>

否则您将无法访问这些属性。

答案 4 :(得分:3)

在按钮中设置背景图像时,按钮轮廓会消失。将它们包含在您的图像中,如果您需要不同的尺寸,请查看UIImage

stretchableImageWithLeftCapWidth:topCapHeight:

方法

答案 5 :(得分:1)

您可以通过访问按钮的图层属性来设置CALayer上的边框属性。

首先,添加Quartz

#import <QuartzCore/QuartzCore.h>

设置属性:

[[myButton layer] setBorderWidth:2.0f];
[[myButton layer] setBorderColor:[UIColor greenColor].CGColor];