Как создать круглую кнопку? - PullRequest
37 голосов
/ 05 августа 2011

Я хочу создать круглую круглую кнопку. Эта кнопка должна выглядеть как круг.

Этот код дает круглую прямоугольную кнопку.

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

Я понял, как создать закругленную прямоугольную кнопку, но я хочу создать круглую круглую кнопку Что мне нужно изменить?

Ответы [ 10 ]

87 голосов
/ 05 августа 2011

Проверенный код:

.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

24 голосов
/ 28 января 2016

Опция раскадровки (должна применяться к Swift или ObjC) -

Если вы предпочитаете работать в раскадровке, есть еще один вариант.

Сначала установите одинаковые значения ширины и высоты, чтобы получить идеальный квадрат. enter image description here

Во-вторых, введите следующие атрибуты. ВАЖНО - сделайте ценность вашего layer.cornerRadius в два раза меньше вашей ширины.

Тогда, когда вы запустите приложение, ваша кнопка будет круглой.

enter image description here

10 голосов
/ 26 сентября 2014

Попробуйте, у меня это сработало.Он сделает вашу кнопку или любой вид в круглой форме, только если вы взяли его в квадрате, т.е. ширина должна быть равна высоте.

yourButton.layer.cornerRadius = yourButton.bounds.size.width/2;
2 голосов
/ 30 сентября 2015

В Xcode 7.0.0 на IOS 8 этот код отлично работает для меня.При условии, что длина и высота рамки кнопки одинаковы.

myButton.clipsToBounds = YES;
myButton.layer.cornerRadius = myButton.layer.frame.size.width/2;
1 голос
/ 24 марта 2017
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

1 голос
/ 10 марта 2015

Использование 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");
}
1 голос
/ 15 июня 2012
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];
0 голосов
/ 24 октября 2013

круглая прямоугольная кнопка с круглым изображением не удовлетворяет потребность в круглой кнопке. И даже если они сделаны на заказ кнопок. Это связано с тем, что эти кнопки будут реагировать на нажатия даже вне круглой части (которая является просто изображением в формате PNG), если она находится внутри диапазона размеров кнопок и не обрезана.

Первый ответ (и только первый от # vijay-apple-dev), приведенный здесь, является правильным. Вам нужно закрепить границу рамки кнопки, чтобы она не реагировала на изображение

0 голосов
/ 05 августа 2011

Шаг 1. Используйте [UIButton buttonWithType:UIButtonTypeCustom] для создания кнопки.

Шаг 2. CGRectMake(100, 100, 100, 30) - прямоугольная форма.Может быть, вы хотите использовать размер вашего изображения вместо этого, например:

CGRect frame = CGRectMake(100, 100, 0, 0);
frame.size = img.size;
button.frame = frame;
0 голосов
/ 05 августа 2011

сделать

[UIButton buttonWithType:UIButtonTypeCustom];

и попробуйте использовать свойство углового радиуса

   button.layer.cornerRadius = button.bounds.size.width/2 / 2.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...