如何使按钮的边角变圆

我有一个矩形图像(JPG),想用它来填充Xcode中带有圆角的按钮的背景。

我写了以下内容:

UIButton *button = [[UIButton buttonWithType:UIButtonTypeRoundedRect] retain];
CGRect frame = CGRectMake(x, y, cardWidth, cardHeight);
button.frame = frame;
[button setBackgroundImage:backImage forState:UIControlStateNormal];

然而,我用这种方法得到的按钮没有圆角:它是一个普通的矩形,看起来与我的原始图像完全一样。我怎样才能得到一个圆角的图像来代表我的按钮?

谢谢!

218835 次浏览

我用UITextArea尝试了以下解决方案,我希望这也适用于UIButton.

首先,将其导入到.m文件中-

#import <QuartzCore/QuartzCore.h>

然后在loadView方法中添加以下行

    yourButton.layer.cornerRadius = 10; // this value vary as per your desire
yourButton.clipsToBounds = YES;

另一个答案也是设置边框(使它更像一个按钮),这里是..如何为自定义类型UIButton设置矩形边框

如果你想要一个圆角,只有一个角或两个角等。阅读这篇文章:

[ObjC]–带圆角的UIButton-http://goo.gl/kfzvkp

它是一个XIB/故事板子类。无需编写代码即可导入和设置边框。

导入石英芯框架如果现有项目中没有,则在ViewController.m中导入#import <QuartzCore/QuartzCore.h>

UIButton *button = [[UIButton buttonWithType:UIButtonTypeRoundedRect]];
CGRect frame = CGRectMake(x, y, width, height); // set values as per your requirement
button.layer.cornerRadius = 10;
button.clipsToBounds = YES;

你可以通过这个运行时属性来实现

enter image description here

我们可以制作自定义按钮。请看附上的截图。

请注意:

在运行时属性中,要更改边框的颜色,请按照以下说明操作

  1. 创建CALayer的类别类

  2. H文件中

    @property(nonatomic, assign) UIColor* borderIBColor;
    
  3. in m file:

    -(void)setBorderIBColor:(UIColor*)color {
    self.borderColor = color.CGColor;
    }
    
    
    -(UIColor*)borderIBColor {
    return [UIColor colorWithCGColor:self.borderColor];
    }
    

now onwards to set border color check screenshot

updated answer

thanks

您可能想要查看我的名为“德基特 ”的库。它是用最新版本的斯威夫特编写的。

您可以直接从Interface Builder中创建一个圆角按钮/文本字段:

DCKit: rounded button

它还具有许多其他很酷的功能,例如带验证的文本字段、带边框的控件、虚线边框、圆形和细线视图等。

挑战极限角半径向上得到一个圆:

    self.btnFoldButton.layer.cornerRadius = self.btnFoldButton.frame.height/2.0;

enter image description here

如果按钮框架是正方形,则frame.height或frame.width无关紧要。否则,请使用两者中的最大值。

UIButton* closeBtn = [[UIButton alloc] initWithFrame:CGRectMake(10, 50, 90, 35)];
//Customise this button as you wish then
closeBtn.layer.cornerRadius = 10;
closeBtn.layer.masksToBounds = YES;//Important

首先将按钮的宽度设置为100,高度设置为100

目标C解决方案

YourBtn1.layer.cornerRadius=YourBtn1.Frame.size.width/2;
YourBtn1.layer.borderColor=[uicolor blackColor].CGColor;
YourBtn1.layer.borderWidth=1.0f;

SWIFT 4解决方案

YourBtn1.layer.cornerRadius = YourBtn1.Frame.size.width/2
YourBtn1.layer.borderColor = UIColor.black.cgColor
YourBtn1.layer.borderWidth = 1.0

对于SWIFT:

button.layer.cornerRadius = 10.0

针对SWIFT 3的更新:

使用下面的代码使UIButton角圆:

 yourButtonOutletName.layer.cornerRadius = 0.3 *
yourButtonOutletName.frame.size.height

适用于IOS Swift 4

button.layer.cornerRadius = 25;
button.layer.masksToBounds = true;

试试我的代码。您可以在这里设置UIButton的所有属性,如文本颜色、背景颜色、圆角半径等。

extension UIButton {
func btnCorner() {
layer.cornerRadius = 10
clipsToBounds = true
backgroundColor = .blue
}
}

现在像这样打电话

yourBtnName.btnCorner()

enter image description here

对于目标C

submitButton.layer.cornerRadius = 5;
submitButton.clipsToBounds = YES;

对于斯威夫特

submitButton.layer.cornerRadius = 5
submitButton.clipsToBounds = true

SWIFT 4更新

我也尝试了很多选择,但我仍然无法让我的UIButton走投无路。 我在__ABC__内添加了圆角半径代码,0解决了我的问题。

func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
anyButton.layer.cornerRadius = anyButton.frame.height / 2
}

我们还可以按如下方式调整CornerRadius

func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
anyButton.layer.cornerRadius = 10 //Any suitable number as you prefer can be applied
}

您可以在视图上为您的按钮使用Outlet连接和DidSet功能;

 @IBOutlet weak var button: UIButton!{
didSet {
button.layer.cornerRadius = 5;
button.layer.masksToBounds = true;
}
}