Как скруглить углы кнопки - PullRequest
173 голосов
/ 19 февраля 2011

У меня есть изображение прямоугольника (jpg) и я хочу использовать его, чтобы залить фон кнопки закругленным углом в xcode.

Я написал следующее:

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

Однакокнопка, полученная при таком подходе, не имеет закругленных углов: вместо этого это простой прямоугольник, который выглядит точно так же, как мое исходное изображение.Как я могу вместо этого получить изображение с закругленным углом для представления моей кнопки?

Спасибо!

Ответы [ 13 ]

417 голосов
/ 21 февраля 2011

Я думаю, что у вас есть проблема, я попробовал следующее решение с UITextArea, и я полагаю, что это будет работать и с UIButton.

прежде всего импортируйте это в ваш файл .m -

#import <QuartzCore/QuartzCore.h>

и затем в вашем loadView методе добавьте следующие строки

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

Надеюсь, что это работает для вас, и если да, то общайтесь.

116 голосов
/ 12 мая 2015

Вы можете достичь с помощью этих атрибутов RunTime

enter image description here

мы можем сделать пользовательскую кнопку. Просто посмотрите прикрепленный скриншот.

пожалуйста, обратите внимание:

в атрибутах времени выполнения, чтобы изменить цвет границы, следуйте этой инструкции

  1. создать класс категории CALayer

  2. в файле h

    @property(nonatomic, assign) UIColor* borderIBColor;
    
  3. в файле m:

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

теперь для установки скриншота проверки цвета границы

updated answer

спасибо

15 голосов
/ 01 ноября 2015

Вы можете проверить мою библиотеку под названием DCKit . Он написан на последней версии Swift .

Вы можете создать кнопку или текстовое поле с закругленными углами непосредственно из Интерфейсного конструктора:

DCKit: rounded button

Он также имеет много других интересных функций, таких как текстовые поля с проверкой, элементы управления с границами, пунктирные границы, круговые и линии роста волос и т. Д.

9 голосов
/ 29 декабря 2015

Нажимаем на пределы радиуса угла вверх, чтобы получить круг:

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

enter image description here

Если рамка кнопки имеет квадратную форму, это не имеет значения frame.height или frame.width. В противном случае используйте самый большой из них.

7 голосов
/ 14 ноября 2014

Импорт QuartCore Framework , если его нет в вашем существующем проекте, то импортируйте #import <QuartzCore/QuartzCore.h> в viewcontroller.m

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;
5 голосов
/ 02 марта 2016
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
3 голосов
/ 03 апреля 2016

Ширина первого набора = 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
2 голосов
/ 16 августа 2017

обновлено для Swift 3:

используется для кодирования угла UIButton под кодом:

 yourButtonOutletName.layer.cornerRadius = 0.3 *
        yourButtonOutletName.frame.size.height
2 голосов
/ 10 марта 2017

Для Свифта:

button.layer.cornerRadius = 10.0
2 голосов
/ 03 апреля 2014

Если вы хотите скругленный угол только до одного угла или двух углов и т. Д., Прочитайте этот пост:

[ObjC] - Кнопка UIB с закругленным углом - http://goo.gl/kfzvKP

Это подкласс XIB / раскадровки. Импорт и установка границ без записи кода.

...