Я только начал изучать разработку iOS, не могу найти, как сделать простую закругленную кнопку. Я нахожу ресурсы для старых версий. Нужно ли настраивать фон для кнопки? В Android я бы просто использовал 9 патчей, но я знаю, что iOS не имеет этой возможности.
Как сделать простую закругленную кнопку в Раскадке?
Ответ 1
Чтобы сделать это в раскадровке, вам нужно использовать изображение для кнопки.
В качестве альтернативы вы можете сделать это в коде:
btn.layer.cornerRadius = 10
btn.clipsToBounds = true
Ответ 2
Краткий ответ: ДА
Вы можете абсолютно просто сделать простую закругленную кнопку без необходимости дополнительного фонового изображения или написания какого-либо кода для нее. Просто следуйте приведенному ниже скриншоту, чтобы установить атрибуты времени выполнения для кнопки, чтобы получить желаемый результат.
Он не будет отображаться в Storyboard
но он будет хорошо работать при запуске проекта.
Замечания:
Уровень "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.
-
Вставьте код в класс 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 } } }
-
Обратитесь к изображению.
Ответ 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)
}
}
}