L'accès UIView largeur au moment de l'exécution
Dans Swift, comment puis-je obtenir la largeur (ou la hauteur) au moment de l'exécution, d'une UIView créé par programmation à l'aide de l'auto de contraintes de mise en forme?
J'ai essayé view1.frame.size.width
et view1.frame.width
, mais les deux de retour 0
.
J'ai été à la suite d'une mise en page automatique tutoriel par MakeAppPie et a ajouté view1.layer.cornerRadius = view1.bounds.width/2
comme ci-dessous, mais cela n'a eu aucun effet, donc j'ai fait un po sur view1.bounds.width
et a obtenu 0
:
class ViewController: UIViewController {
func makeLayout() {
//Make a view
let view1 = UIView()
view1.setTranslatesAutoresizingMaskIntoConstraints(false)
view1.backgroundColor = UIColor.redColor()
//Make a second view
let view2 = UIView()
view2.setTranslatesAutoresizingMaskIntoConstraints(false)
view2.backgroundColor = UIColor(red: 0.75, green: 0.75, blue: 0.1, alpha: 1.0)
//Add the views
view.addSubview(view1)
view.addSubview(view2)
//--------------- constraints
//make dictionary for views
let viewsDictionary = ["view1":view1,"view2":view2]
//sizing constraints
//view1
let view1_constraint_H:Array = NSLayoutConstraint.constraintsWithVisualFormat("H:[view1(>=50)]", options: NSLayoutFormatOptions(0), metrics: nil, views: viewsDictionary)
let view1_constraint_V:Array = NSLayoutConstraint.constraintsWithVisualFormat("V:[view1(50)]", options: NSLayoutFormatOptions(0), metrics: nil, views: viewsDictionary)
view1.addConstraints(view1_constraint_H)
view1.addConstraints(view1_constraint_V)
//view2
let view2_constraint_H:NSArray = NSLayoutConstraint.constraintsWithVisualFormat("H:[view2(50)]", options: NSLayoutFormatOptions(0), metrics: nil, views: viewsDictionary)
let view2_constraint_V:NSArray = NSLayoutConstraint.constraintsWithVisualFormat("V:[view2(>=40)]", options: NSLayoutFormatOptions(0), metrics: nil, views: viewsDictionary)
view2.addConstraints(view2_constraint_H)
view2.addConstraints(view2_constraint_V)
//position constraints
//views
let view_constraint_H:NSArray = NSLayoutConstraint.constraintsWithVisualFormat("H:|-100-[view2]", options: NSLayoutFormatOptions(0), metrics: nil, views: viewsDictionary)
let view_constraint_V:NSArray = NSLayoutConstraint.constraintsWithVisualFormat("V:|-136-[view1]-100-[view2]-100-|", options: NSLayoutFormatOptions.AlignAllTrailing, metrics: nil, views: viewsDictionary)
view.addConstraints(view_constraint_H)
view.addConstraints(view_constraint_V)
view1.layer.cornerRadius = view1.bounds.width/2
}
override func viewDidLoad() {
super.viewDidLoad()
func supportedInterfaceOrientations() -> Int {
return Int(UIInterfaceOrientationMask.All.rawValue)
}
//Do any additional setup after loading the view, typically from a nib.
view.backgroundColor = UIColor(red: 0.9, green: 0.9, blue: 1, alpha: 1.0)
makeLayout()
}
}
vue1.cadre.largeur de travail. Pouvez-vous poster plus de votre code?
merci pour la réponse Steve - avoir ajouté le code ci-dessus.
Vous obtenez 0, car la mise en page automatique mécanisme n'a pas déjà coup de pied à ce point pour redimensionner vos points de vue.
merci pour la réponse Steve - avoir ajouté le code ci-dessus.
Vous obtenez 0, car la mise en page automatique mécanisme n'a pas déjà coup de pied à ce point pour redimensionner vos points de vue.
OriginalL'auteur gemello | 2014-10-26
Vous devez vous connecter pour publier un commentaire.
Ajouter ce et vous êtes bon pour aller:
vous pouvez regarder la largeur ou la hauteur que vous s'il vous plaît.
Ceci est également imprime 0,0 pour moi.
J'ai trouvé que le problème pour moi était lors de l'appel de la classe initialiser j'ai oublié de passer l'image en revenant ainsi 0,0 dans la classe d'initialisation. XCode ne donner aucune erreur pour ce soit.
Rosenberg Mon homme Rosenberg!
OriginalL'auteur Steve Rosenberg
Juste une chose à propos de ces champs:
Ne sont d'utilisateur réel la taille de l'instrument si la vue a été représenté à l'écran, sinon ils sont ce que jamais vous les définissez comme dans le storyboard. Donc, si vous essayez d'effectuer une sorte de calcul avant l'affichage est établi, vous aurez à déterminer la largeur ou la hauteur d'une autre façon!
OriginalL'auteur Craig
vous ne pouvez utiliser cette
OriginalL'auteur Shahryar