web-dev-qa-db-fra.com

Rapport de format personnalisé avec mise en page automatique

Disons que j'ai un UIView qui contient un enfant UIView qui doit être 4: 3. Je veux résoudre ce problème en utilisant AutoLayout dans le code. 

J'ai eu du mal avec AutoLayout mais je n'ai pas encore compris comment faire cela.

Savez-vous comment résoudre ce problème?

Merci beaucoup.

Je joins une image pour mieux expliquer ce que je veux dire . http://d.pr/i/d0Oc

38
JaviAlgaba

J'ai réalisé.

//Given a childView... 
NSLayoutConstraint *constraint =[NSLayoutConstraint
                           constraintWithItem:childView
                           attribute:NSLayoutAttributeWidth
                           relatedBy:NSLayoutRelationEqual
                           toItem:childView
                           attribute:NSLayoutAttributeHeight
                           multiplier:4.0/3.0 //Aspect ratio: 4*height = 3*width
                           constant:0.0f];
            [childView addConstraint:constraint];
95
JaviAlgaba

Voici la syntaxe pour Swift 3:

NSLayoutConstraint(
  item: item,
  attribute: .width,
  relatedBy: .equal,
  toItem: item,
  attribute: .height,
  multiplier: width / height,
  constant: 0)
1
user1615898

J'ai essayé toutes les réponses ci-dessus mais cela n'a pas fonctionné, et voici ma solution avec Swift 3

let newConstraint = NSLayoutConstraint(item: yourView, attribute: .width, relatedBy: .equal, toItem: yourView, attribute: .height, multiplier: 560.0/315.0, constant: 0)
yourView.addConstraint(newConstraint)
NSLayoutConstraint.activate([newConstraint])  
NSLayoutConstraint.deactivate(yourView.constraints)
yourView.layoutIfNeeded()
0
tuandapen