如何创build一个圆形button?

我是Iphone开发新手。

我想创build一个圆形的圆形button。 这个button应该看起来像一个圆圈。

这给了圆形的矩形button。

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]; 

我想出了如何创build一个圆angular的矩形button,但我想创build一个圆形的圆形button。 请build议。

testing代码:

。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]; 

结果

在这里输入图像说明

几何在这个概念

在这里输入图像说明

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

如果你喜欢在故事板中工作,还有另一种select。

首先,将宽度和高度设置为相同的值,以制作完美的方形。 在这里输入图像说明

其次,input以下属性。 重要 – 使您的layer.cornerRadius值的一半大小的宽度。

然后,当你运行应用程序,你的button将是圆的。

在这里输入图像说明

试试这个,它为我工作。 它只会让你的button或圆形的任何视图,如果你把它在正方形,即宽度应该等于高度。

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

在iOS 8的Xcode 7.0.0中,这段代码完全适合我。 只要button框架的长度和高度相同。

 myButton.clipsToBounds = YES; myButton.layer.cornerRadius = myButton.layer.frame.size.width/2; 
 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]; 

使用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"); } 
 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) } 

**要制作圆形button,必须给button的高度和宽度相同,并将一半的值赋予angular半径** 在这里输入图像说明

第1步。使用[UIButton buttonWithType:UIButtonTypeCustom]创buildbutton。

第2步CGRectMake(100, 100, 100, 30)是一个矩形形状。 也许你想要使用你的图像的大小,而不是像这样:

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

圆形图像的圆形button不能满足圆形button的需要。 即使他们是自定义button。 这是因为,如果这个button在button尺寸范围内并且没有被剪裁,那么即使在圆形部分之外(即,仅仅是一个.png图像),这个button也会响应水龙头。

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

做一个

 [UIButton buttonWithType:UIButtonTypeCustom]; 

并尝试使用拐angular半径属性

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