如何创建圆形按钮?

时间:2011-08-05 07:15:46

标签: iphone objective-c xcode

我是Iphone开发的新手。

我想创建一个圆形的按钮。此按钮应该看起来像一个圆圈。

这给出了圆形矩形按钮。

UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
button.frame = CGRectMake(100, 100, 100, 30);
UIImage *img = [UIImage imageNamed:@"01.png"];
[button setImage:img forState:UIControlStateNormal];
[img release];    

我想出了如何创建圆角矩形按钮,但我想创建一个圆形按钮。请建议。

10 个答案:

答案 0 :(得分:87)

经过测试的代码:

·H

 #import <QuartzCore/QuartzCore.h>

-(void)roundButtonDidTap:(UIButton*)tappedButton;

的.m

#define ROUND_BUTTON_WIDTH_HEIGHT YourButtonWidthToBeSetHere

-(void)roundButtonDidTap:(UIButton*)tappedButton{

    NSLog(@"roundButtonDidTap Method Called");

}



UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];

[button setImage:[UIImage imageNamed:@"TimoonPumba.png"] forState:UIControlStateNormal];

[button addTarget:self action:@selector(roundButtonDidTap:) forControlEvents:UIControlEventTouchUpInside];

//width and height should be same value
button.frame = CGRectMake(0, 0, ROUND_BUTTON_WIDTH_HEIGHT, ROUND_BUTTON_WIDTH_HEIGHT);

//Clip/Clear the other pieces whichever outside the rounded corner
button.clipsToBounds = YES;

//half of the width
button.layer.cornerRadius = ROUND_BUTTON_WIDTH_HEIGHT/2.0f;
button.layer.borderColor=[UIColor redColor].CGColor;
button.layer.borderWidth=2.0f;

[self.view addSubview:button];

<强>结果

enter image description here

此概念中的几何

enter image description here

答案 1 :(得分:22)

故事板选项(应适用于Swift或ObjC) -

如果您更喜欢在故事板中工作,还有另一种选择。

首先,将宽度和高度设置为相同的值,以形成完美的正方形。 enter image description here

其次,输入以下属性。重要信息 - 将layer.cornerRadius的值设置为宽度的一半。

然后,当您运行该应用程序时,您的按钮将是圆形的。

enter image description here

答案 2 :(得分:10)

试试这个,它对我有用。只有当你把它按在正方形上时,它才会使你的按钮或任何圆形视图,宽度应该等于高度。

yourButton.layer.cornerRadius = yourButton.bounds.size.width/2;

答案 3 :(得分:2)

在IOS 8上的Xcode 7.0.0中,这段代码非常适合我。 如果按钮框架的长度和高度相同。

myButton.clipsToBounds = YES;
myButton.layer.cornerRadius = myButton.layer.frame.size.width/2;

答案 4 :(得分:1)

UIButton *myButton=[UIButton buttonWithType:UIButtonTypeCustom];
myButton.frame = CGRectMake(50,50,30,30);
[myButton addTarget:self action:@selector(buttonEvent) forControlEvents:UIControlEventTouchUpInside];
[myButton setImage:[UIImage imageNamed:@"sarabjit.png"] forState:UIControlStateNormal];
[self.view addSubView:myButton];

答案 5 :(得分:1)

使用Swift就像答案一样 Vijay-Apple-Dev.blogspot

let ROUND_BUTTON_WIDTH_HEIGHT YourButtonWidthToBeSetHere   

override func viewDidLoad() {
   super.viewDidLoad()

   var button = UIButton.buttonWithType(.Custom) as UIButton
   button.frame = CGRectMake(160, 100, ROUND_BUTTON_WIDTH_HEIGHT, ROUND_BUTTON_WIDTH_HEIGHT)

   button.layer.cornerRadius = ROUND_BUTTON_WIDTH_HEIGHT / 2.0
   button.layer.borderColor = UIColor.redColor().CGColor
   button.layer.borderWidth = 2.0

   button.setImage(UIImage(named:"TimoonPumba.png"), forState: .Normal)
   button.addTarget(self, action: "roundButtonDidTap", forControlEvents: .TouchUpInside)
   button.clipsToBounds = true

   view.addSubview(button)
}

func roundButtonDidTap() {
   NSLog(@"roundButtonDidTap Method Called");
}

答案 6 :(得分:1)

override func viewDidLoad() {
    super.viewDidLoad()

    let facebookButton = UIButton()
    facebookButton.frame = CGRectMake(30, 200, 150, 150)
    facebookButton.layer.cornerRadius = 75
    facebookButton.layer.masksToBounds = true
    self.view.addSubview(facebookButton)
    }

**要制作圆形按钮,您必须为按钮指定相同的高度和相同的宽度,并且应将一半的值赋予角半径** enter image description here

答案 7 :(得分:0)

步骤1.使用[UIButton buttonWithType:UIButtonTypeCustom]创建按钮。

步骤2. CGRectMake(100, 100, 100, 30)是矩形。也许您想要使用图像的大小,如下所示:

CGRect frame = CGRectMake(100, 100, 0, 0);
frame.size = img.size;
button.frame = frame;

答案 8 :(得分:0)

圆形图像的圆形按钮不满足圆形按钮的需要。即使它们都是定制按钮也不行。这是因为,如果它在按钮大小范围内并且没有被剪裁,则此按钮甚至会响应圆形部分(仅仅是一个.png图像)之外的按钮。

这里给出的第一个答案(只有#vijay-apple-dev的第一个答案)是正确的。您需要剪切按钮框的边界,以便在图像外部停止响应

答案 9 :(得分:-4)

制作

[UIButton buttonWithType:UIButtonTypeCustom];

并尝试使用角半径属性

   button.layer.cornerRadius = button.bounds.size.width/2 / 2.0