Iphone 如何为自定义类型UIButton设置矩形边框
我正在尝试将图像设置为自定义UIButton的背景。我可以在interface builder中为“rounded rect”UIButton设置背景图像,但现在边框消失了。有没有办法保留边界?此外,我希望使边框显示为矩形而不是圆形。查看Iphone 如何为自定义类型UIButton设置矩形边框,iphone,objective-c,cocoa-touch,Iphone,Objective C,Cocoa Touch,我正在尝试将图像设置为自定义UIButton的背景。我可以在interface builder中为“rounded rect”UIButton设置背景图像,但现在边框消失了。有没有办法保留边界?此外,我希望使边框显示为矩形而不是圆形。查看CALayer的角半径、边框宽度和边框颜色属性。从iPhone OS 3.0开始,这些属性都是新的 您可能希望子类化UIButton,然后在构造函数中设置这些属性。您的按钮有一个图层特性,您可以访问该特性来设置这些边框特性 下面是一个例子: - (id)init
CALayer
的角半径
、边框宽度
和边框颜色
属性。从iPhone OS 3.0开始,这些属性都是新的
您可能希望子类化UIButton
,然后在构造函数中设置这些属性。您的按钮有一个图层特性,您可以访问该特性来设置这些边框特性
下面是一个例子:
- (id)initWithFrame:(CGRect)frame {
if(self = [super initWithFrame:frame]) {
[self.layer setBorderWidth:1.0];
[self.layer setCornerRadius:5.0];
[self.layer setBorderColor:[[UIColor colorWithWhite:0.3 alpha:0.7] CGColor]];
}
return self;
}
在按钮中设置背景图像时,按钮轮廓将消失。如果需要不同尺寸的图片,请将其包含在图片中
LeftCapWidth:topCapHeight:StretcheableImagewithLeftCapWidth:
方法。#导入//别忘了将其添加到文件中
#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]];
CALayer*层=[yourUIButton层];
[图层设置maskstobounds:是];
[层半径:0.0]//半径为0时,边框为矩形
[层宽:1.0];
[图层颜色:[[UIColor grayColor]CGColor]];
我知道这是一个老问题,但我还是想把我的答案贴在这里。因为我一直在寻找答案,但我自己很容易就解决了这个问题。您也可以在IB中“用户定义的运行时属性”来设置圆角,如下图所示
我想补充一下南希和乔纳森提供的答案 要访问图层的
边框
和拐角半径
属性,首先需要导入QuartzCore框架
#导入
否则,您将无法访问属性 通过访问按钮的图层属性,可以在CALayer上设置边框属性 首先,加入石英
#import <QuartzCore/QuartzCore.h>
也许再多了解一点?你是在实现-drawRect:吗?我们谈论的是哪种自定义按钮?您是否尝试过使用图像设置其背景(这可能是大多数人都会做的),或者您是否专门寻找矩形绘制方法?您必须更具体一点。您正在尝试绘制自定义边框吗?设置按钮的大小?请给我们更多的细节。好的,我正在尝试设置一个图像作为UIButton的背景。为此,我在interface builder中为“rounded rect”UIButton设置了背景图像。但是边界消失了,有没有办法保留边界?此外,我还需要将边框设置为rect,而不是“圆角rect”。在2.2.1中,我将按照Kendall下面的建议进行操作。这是新申请吗?如果是这样的话,我敢肯定,从现在起,苹果将只批准与iPhone OS 3.0兼容的应用程序。是的,这是一个新的应用程序。由于苹果将只批准与OS 3.0兼容的应用程序,新的应用程序可能无法与以前的OS版本兼容。尽管OS3.0升级是免费的,但他们中的一些人可能不愿意升级。请分享你的想法。因为3.0是免费的(iPodtouch实际上是10美元),用户升级的经济障碍非常低。随着所有新的操作系统功能和相关应用的开发,我认为大多数用户将相当快地升级到3.0。有了这些假设,我宁愿把时间集中在改善用户体验和添加新功能上。我想我希望将我的支持/维护活动保持在最低限度,只要它不会对我的用户产生太大的影响。谢谢,让我们希望大多数用户都会进行升级。从历史上看,绝大多数用户都升级了。。。毕竟,你不必担心瞄准2.1来捕获所有12个没有从该版本升级的用户。如果没有核心动画,真的没有办法做到这一点吗?对于那些没有看到下面添加@TylerJames的人:请注意,你需要导入QuartzCore框架才能工作。这就是我一直在寻找的+1.
[[myButton layer] setBorderWidth:2.0f];
[[myButton layer] setBorderColor:[UIColor greenColor].CGColor];