Je ajoute de manière programmée un UITEXTFIELD à une horizontale uistackview, qui est à l'intérieur d'une Vertical Uistackview, mais il est affiché avec des coins arrondis et pointus.
Ce que je pense que le problème est que le Uitextfield est attiré deux fois , d'abord avec l'apparence par défaut, puis avec l'apparence personnalisée que j'ai ajoutée à sa couche. p>
Le Uitextfield ressemble à ceci p>
Si vous regardez de près, vous pouvez voir que la couleur des coins tranchants est la valeur par défaut, tandis que le reste de la bordure est plus sombre. P>
Le code que j'utilise pour modifier son apparence est la suivante. P>
myTextField.layer.borderWidth = 1.0 myTextField.layer.cornerRadius = 6.0 myTextField.clipsToBounds = true myTextField.layer.borderColor = UIColor.darkGray.cgColor myTextField.isUserInteractionEnabled = false // Create the constraints constraints.append(NSLayoutConstraint(item: horizontalStackView, attribute: .width, relatedBy: .equal, toItem: verticalStackView, attribute: .width, multiplier: 1.0, constant: 0.0)) // Add the components to the Horizontal Stack View horizontalStackView.addArrangedSubview(myTextField) horizontalStackView.addArrangedSubview(myStepper) // A stepper that resides next to the conflicting TextField verticalStackView.addArrangedSubview(horizontalStackView)
3 Réponses :
Vous aurez peut-être besoin de
Ce n'est pas un bon moyen de contourner un problème comme celui-ci - il y a un coût de performance pour Clipstobounds Code>. Une meilleure solution serait un moyen d'arrêter la deuxième frontière d'être dessinée en premier lieu.
Essayez d'ajouter vos sous-visions à votre page de pile comme ceci.
stackView.translatesAutoresizingMaskIntoConstraints = false
J'ai essayé SH_KHAN Solution et cela a fonctionné, mais après avoir lu les commentaires, j'ai décidé d'essayer autre chose afin qu'il n'y aurait aucun coût de performance. Après avoir commenté cette ligne de code (la clipplication) et l'exécution de l'application à nouveau, les coins ne se sont pas présentés. P>
Je suis complètement positif Il n'y a pas d'autre changement en plus d'ajouter cette ligne, d'exécuter l'application, puis de commenter la même ligne de sortie. P>
Je ne suis pas vraiment sûr de ce que le problème (ou même la solution) était. Peut-être que tout ce que je devais faire était de nettoyer le dossier de construction ( produit -> nettoyer le dossier de construction code>) mais cela n'a pas de sens pour moi. P>
Pouvez-vous ajouter le code que vous utilisez pour créer le champ de texte? On dirait que cela dessine une frontière supplémentaire, mais le style frontière par défaut est "Aucun", donc cela semble étrange.
Salut Noah. Outre le code de la question, il n'y a que l'appel à l'initialiseur sans paramètres.
Pouvez-vous partager le code sur la manière dont vous l'ajoutez à votre vue sur la pile? Avez-vous quelque chose dans l'inspecteur des attributs Xcode?
@Carlosm. - Vous devez avoir autre chose en cours. Essayez votre code dans un nouveau contrôleur de vue, où tout ce que vous ajoutez est la vue sur la pile avec (je suppose) votre étiquette et votre champ de texte. Si vous ne voyez pas les "coins tranchants", alors vous savoir i> Il y a autre chose dans votre code qui le cause. Aussi, utilisez la hiérarchie de la vue de débogage pour inspecter ce qui est réellement là-bas.
@Juliansilvestri j'ai ajouté le code. Je ne monte pas la vue directement dans un storyboard, donc il n'y a pas d'inspecteur d'attributs
S'il vous plaît clarifier ValègeEtextfield et MyTextfield, ce sont différents corrects? Ou avez-vous connecté votre TextView à deux identités?
@Juliansilvestri mon mauvais. C'est le même Textfield, j'ai changé le nom dans le code d'origine pour une meilleure compréhension, mais j'ai oublié de le changer sur le dernier édition