注意:自问这个问题以来,事情已经发生了变化; 请看这里有一个很好的近期概述.
在自动布局之前,您可以通过存储框架,设置锚点和恢复框架来更改视图图层的锚点,而无需移动视图.
在自动布局世界中,我们不再设置框架,但是约束似乎不能将视图的位置调整回我们想要的位置.您可以破解约束以重新定位视图,但在轮换或其他调整大小事件时,这些会再次变为无效.
以下明智的想法不起作用,因为它创建了"无效的布局属性配对(左侧和宽度)":
layerView.layer.anchorPoint = CGPointMake(1.0, 0.5);
// Some other size-related constraints here which all work fine...
[self.view addConstraint:
[NSLayoutConstraint constraintWithItem:layerView
attribute:NSLayoutAttributeLeft
relatedBy:NSLayoutRelationEqual
toItem:layerView
attribute:NSLayoutAttributeWidth
multiplier:0.5
constant:20.0]];
Run Code Online (Sandbox Code Playgroud)
在这里我的目的是左边缘设置layerView,调整后的定位点来看,它的宽度加上20(我从上海华盈的左边缘要插入的距离)的一半.
是否可以在使用自动布局布局的视图中更改定位点而不更改视图的位置?我是否需要使用硬编码值并在每次旋转时编辑约束?我希望不是.
我需要更改锚点,以便在将变换应用于视图时,我获得正确的视觉效果.
当更改UIView的某些属性时,它会layoutSubviews在superview中触发.我在文档中找不到任何关于此的陈述.
这些属性触发superview和self中的布局
这些属性仅在superview中触发布局
这些属性仅触发自我布局
这些属性不会触发任何布局
我发现变换触发布局并且位置和anchorPoint没有变得非常混乱.
示例代码:https://github.com/hfossli/LayoutSubviewsInconsistency
我想知道:
我在文档和头文件中找不到任何相关内容.使用UIDynamics或类似产品时问题很严重.