我正在尝试将图像设置为自定义UIButton的背景。我能够在界面构建器中为“圆角矩形”UIButton设置背景图像,但现在边框已经消失。有没有办法保留边界?另外,我想让边框显示为矩形而不是圆角。
答案 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}},borderWidth
和borderColor
属性。这些属性是iPhone OS 3.0的新功能。
您可能希望继承CALayer
,然后在构造函数中设置这些属性。您的按钮具有图层属性,您可以访问该属性来设置这些边框属性。
以下是一个例子:
UIButton
答案 2 :(得分:8)
您还可以在IB中使用“用户定义的运行时属性”来设置圆角,如下图所示。
答案 3 :(得分:7)
我想补充一下南石和乔纳森提供的答案。
要访问图层的border
和cornerRadius
属性,首先需要导入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];