Подтвердить что ты не робот

Как сделать простую закругленную кнопку в Раскадке?

Я только начал изучать разработку iOS, не могу найти, как сделать простую закругленную кнопку. Я нахожу ресурсы для старых версий. Нужно ли настраивать фон для кнопки? В Android я бы просто использовал 9 патчей, но я знаю, что iOS не имеет этой возможности.

введите описание изображения здесь

4b9b3361

Ответ 1

Чтобы сделать это в раскадровке, вам нужно использовать изображение для кнопки.

В качестве альтернативы вы можете сделать это в коде:

 btn.layer.cornerRadius = 10
 btn.clipsToBounds = true

Ответ 2

Краткий ответ: ДА

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

Он не будет отображаться в Storyboard но он будет хорошо работать при запуске проекта.

enter image description here

Замечания:
Уровень "Key Path" layer.cornerRadius и значение - 5. Значение необходимо изменить в соответствии с высотой и шириной кнопки. Формула для этого - высота кнопки * 0.50. Поэтому поиграйте со значением, чтобы увидеть ожидаемую закругленную кнопку в симуляторе или на физическом устройстве. Эта процедура будет выглядеть утомительно, если у вас есть несколько кнопок для округления в раскадровке.

Ответ 3

Вы можете сделать что-то вроде этого:

@IBDesignable class MyButton: UIButton
{
    override func layoutSubviews() {
        super.layoutSubviews()

        updateCornerRadius()
    }

    @IBInspectable var rounded: Bool = false {
        didSet {
            updateCornerRadius()
        }
    }

    func updateCornerRadius() {
        layer.cornerRadius = rounded ? frame.size.height / 2 : 0
    }
}

Задайте класс MyButton в Identity Inspector, а в IB у вас будет свойство rounded:

введите описание изображения здесь

Ответ 4

  • Создайте класс Cocoa Touch.

enter image description here

  1. Вставьте код в класс RoundButton.

    import UIKit
    
    @IBDesignable
    class RoundButton: UIButton {
    
        @IBInspectable var cornerRadius: CGFloat = 0{
            didSet{
            self.layer.cornerRadius = cornerRadius
            }
        }
    
        @IBInspectable var borderWidth: CGFloat = 0{
            didSet{
                self.layer.borderWidth = borderWidth
            }
        }
    
        @IBInspectable var borderColor: UIColor = UIColor.clear{
            didSet{
                self.layer.borderColor = borderColor.cgColor
            }
        }
    }
    
  2. Обратитесь к изображению.

enter image description here

Ответ 5

Я нашел самый простой способ сделать это, установив cornerRadius на половину высоты обзора.

button.layer.cornerRadius = button.bounds.size.height/2

Ответ 6

Вы можете подключить IBOutlet кнопки yur из раскадровки.

Затем вы можете установить corner radius своей кнопки, чтобы сделать ее круглой.

например, ваш outlet равен myButton, затем

Obj - C

 self.myButton.layer.cornerRadius = 5.0 ;

Свифта

  myButton.layer.cornerRadius = 5.0

Если вы хотите точную круглую кнопку, тогда ваша кнопка width и height должна быть equal, а cornerRadius должна быть равна высоте или ширине /2 (половина ширины или высоты).

Ответ 7

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

Пожалуйста, взгляните на следующий код. Чтобы использовать этот код, создайте новый swift файл RoundedView или все, что вы хотели бы назвать, затем перейдите в свою раскадровку и измените класс на "RoundedView", "RoundedImageView" или "RoundedButton".

import UIKit

@IBDesignable class RoundedImage: UIImageView
{
    override func layoutSubviews() {
        super.layoutSubviews()

        updateCornerRadius()
    }

    @IBInspectable var rounded: Bool = false {
        didSet {
            updateCornerRadius()
        }
    }

    @IBInspectable var cornerRadius: CGFloat = 0.1 {
        didSet {
            updateCornerRadius()
        }
    }

    func updateCornerRadius() {
        layer.cornerRadius = rounded ? cornerRadius : 0
        layer.masksToBounds = rounded ? true : false
    }
}

@IBDesignable class RoundedView: UIView
{
    override func layoutSubviews() {
        super.layoutSubviews()

        updateCornerRadius()
    }

    @IBInspectable var rounded: Bool = false {
        didSet {
            updateCornerRadius()
        }
    }

    @IBInspectable var cornerRadius: CGFloat = 0.1 {
        didSet {
            updateCornerRadius()
        }
    }

    func updateCornerRadius() {
        layer.cornerRadius = rounded ? cornerRadius : 0
        layer.masksToBounds = rounded ? true : false
    }
}

@IBDesignable class RoundedButton: UIButton
{
    override func layoutSubviews() {
        super.layoutSubviews()

        updateCornerRadius()
    }

    @IBInspectable var rounded: Bool = false {
        didSet {
            updateCornerRadius()
        }
    }

    @IBInspectable var cornerRadius: CGFloat = 0.1 {
        didSet {
            updateCornerRadius()
        }
    }

    func updateCornerRadius() {
        layer.cornerRadius = rounded ? cornerRadius : 0
        layer.masksToBounds = rounded ? true : false
    }
}

Ответ 8

При добавлении layer.cornerRadius в раскадровке убедитесь, что у вас нет начальных или конечных пробелов. Если вы скопируете пасту, вы можете получить пробелы. Было бы неплохо, если XCode скажет какое-то предупреждение или ошибку.

Ответ 9

Попробуйте это!

 override func viewDidLoad() {
   super.viewDidLoad()

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

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

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

   view.addSubview(button)
}
    func OnClickroundButton() {
   NSLog(@"roundButton Method Called");
}

Ответ 10

import UIKit

@IBDesignable class MyButton: UIButton
{
    override func layoutSubviews() {
        super.layoutSubviews()


    }

    func updateCornerRadius(radius:CGFloat) {
        layer.cornerRadius = radius
    }
    @IBInspectable var cornerRadius:CGFloat = 0{
        didSet{
            updateCornerRadius(radius: cornerRadius)
        }
    }
}