Je viens de commencer à apprendre le développement iOS, je ne trouve pas comment fabriquer un simple bouton arrondi. Je trouve des ressources pour les anciennes versions. Dois-je définir un arrière-plan personnalisé pour un bouton? Sous Android, j'utiliserais simplement un correctif 9, mais je sais qu'iOS n'a pas cette capacité.
Pour le faire dans le storyboard, vous devez utiliser une image pour le bouton.
Sinon, vous pouvez le faire dans le code:
btn.layer.cornerRadius = 10
btn.clipsToBounds = true
Réponse courte: OUI
Vous pouvez absolument créer un simple bouton arrondi sans avoir besoin d’une image d’arrière-plan supplémentaire ou de l’écriture du code correspondant. Suivez simplement la capture d'écran donnée ci-dessous pour définir les attributs d'exécution du bouton afin d'obtenir le résultat souhaité.
Cela n'apparaîtra pas dans le Storyboard
mais cela fonctionnera correctement lorsque vous exécuterez le projet.
Remarque:
Le 'Chemin de la clé' layer.cornerRadius
et la valeur est 5. La valeur doit être modifiée en fonction de la hauteur et de la largeur. du bouton. La formule est la hauteur du bouton * 0.50. Jouez donc autour de la valeur pour voir le bouton arrondi attendu dans le simulateur ou sur le périphérique physique. Cette procédure vous semblera fastidieuse lorsque vous aurez plus d’un bouton à arrondir dans le storyboard.
Vous pouvez faire quelque chose comme ça:
@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
}
}
Définissez la classe sur MyButton
dans Identity Inspector
et dans IB, vous aurez la propriété rounded
:
Insérez le code dans la classe 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
}
}
}
Référez l'image.
J'ai trouvé le moyen le plus simple de le faire, en réglant le cornerRadius à la moitié de la hauteur de la vue.
button.layer.cornerRadius = button.bounds.size.height/2
Comme d’autres réponses ont suggéré d’effectuer la plupart de ces travaux dans le code, une seule réponse a permis de visualiser vos modifications dans l’interface IB du storyboard. Ma réponse va au-delà de cette réponse en vous permettant de changer le coin Rayon de la vue, du bouton, de l'image, etc.
S'il vous plaît jeter un oeil sur le code suivant. Pour utiliser ce code, créez un nouveau fichier Swift appelé RoundedView ou appelez-le de la sorte, puis accédez à votre storyboard et définissez la classe sur "RoundedView", "RoundedImageView" ou "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
}
}
Vous pouvez connecter IBOutlet
of your button depuis le storyboard.
Ensuite, vous pouvez définir corner radius
de votre bouton pour le faire tourner de coin.
par exemple, votre outlet
est myButton
alors,
Obj - C
self.myButton.layer.cornerRadius = 5.0 ;
Swift
myButton.layer.cornerRadius = 5.0
Si vous voulez un bouton rond exact, alors width
et height
de votre bouton doivent être equal
et cornerRadius
doivent être égaux à la hauteur ou à la largeur/2 (moitié de la largeur ou de la hauteur) .
Lorsque vous ajoutez layer.cornerRadius
dans le storyboard, assurez-vous de ne pas avoir d'espaces de début ou de fin. Si vous copiez-collez, vous pourriez avoir des espaces insérés. Ce serait bien si XCode disait une sorte d'avertissement ou d'erreur.
Essaye ça!!
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");
}