使用AutoLayout自定义宽高比

Jav*_*aba 38 objective-c uikit uiview autolayout ios6

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

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

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

非常感谢你.

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

Jav*_*aba 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];
Run Code Online (Sandbox Code Playgroud)

  • 我认为它需要交换NSLayoutAttributeHeight和NSLayoutAttributeWidth.现在它说3:4而不是4:3. (3认同)
  • 另外,在这里添加的一件好事是,一旦创建了约束,就不能改变约束的乘数 - 乘数属性是只读的.即使使用关键路径,也无法更改乘数.继续进行的方法是删除手头的约束并使用新的乘数重新创建它. (2认同)