使用AutoLayout自定义宽高比

时间:2012-09-20 10:25:41

标签: objective-c uiview uikit ios6 autolayout

假设我有一个包含UIView的UIView,它必须是4:3。我想在代码中使用AutoLayout解决这个问题。

我一直在与AutoLayout挣扎,但我还没想出怎么做。

你知道如何解决这个问题吗?

非常感谢。

我附上一张图片来更好地解释我的意思。 http://d.pr/i/d0Oc

3 个答案:

答案 0 :(得分:95)

我想通了。

//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];

答案 1 :(得分:1)

以下是Swift 3的语法:

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

答案 2 :(得分:0)

我已经尝试了上面的所有答案但是没有用,这是我用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()