Je mets à jour mon application pour utiliser UIStackViews, maintenant que la plupart des gens devraient avoir mis à jour vers iOS 9.
Dans l'ancienne version, j'ai créé une UIView composée de deux UITextFields et défini sa propriété layer.cornerRadius.
Dans la nouvelle version, j'ai créé un UIStackView composé des deux mêmes UITextFields, au lieu de l'UIView. Lorsque j'essaie de définir sa propriété layer.cornerRadius, rien ne semble se produire. La documentation ne semble pas contenir d'informations utiles/pertinentes.
UIStackView
gère simplement la position et la taille de ses vues arrangées, le cornerRadius n'a aucun effet. Essayez d'ajouter une vue personnalisée sous la stackView et définissez le cornerRadius de celle-ci.
ajoutez cornerRadius sur la vue d'ensemble de stackview et activez la propriété clipsToBounds de la vue d'ensemble afin que les sous-vues soient limitées aux limites de la vue d'ensemble.
Vous pouvez utiliser une extension comme celle-ci:
extension UIStackView {
func customize(backgroundColor: UIColor = .clear, radiusSize: CGFloat = 0) {
let subView = UIView(frame: bounds)
subView.backgroundColor = backgroundColor
subView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
insertSubview(subView, at: 0)
subView.layer.cornerRadius = radiusSize
subView.layer.masksToBounds = true
subView.clipsToBounds = true
}
}
Si vous souhaitez fournir backgroundColor, CornerRadius et Shadow à StackView:
extension UIStackView {
func insertCustomizedViewIntoStack(background: UIColor, cornerRadius: CGFloat, shadowColor: CGColor, shadowOpacity: Float, shadowRadius: CGFloat) {
let subView = UIView(frame: bounds)
subView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
subView.layer.cornerRadius = cornerRadius
subView.backgroundColor = backgroundColor
subView.layer.shadowColor = shadowColor
subView.layer.shadowOpacity = shadowOpacity
subView.layer.shadowOffset = .zero
subView.layer.shadowRadius = shadowRadius
insertSubview(subView, at: 0)
}
}
Si vous souhaitez fournir backgroundColor, CornerRadius, borderColor et border width à StackView:
extension UIStackView {
func insertViewIntoStack(background: UIColor, cornerRadius: CGFloat, borderColor: CGColor, borderWidth: CGFloat) {
let subView = UIView(frame: bounds)
subView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
subView.layer.cornerRadius = cornerRadius
subView.backgroundColor = backgroundColor
subView.layer.borderColor = borderColor
subView.layer.borderWidth = borderWidth
insertSubview(subView, at: 0)
}
}