注意 : 自从提出这个问题以来,事情一直在向前发展; 请参阅 给你获得最近的一个很好的概述。
在自动布局之前,您可以通过存储框架、设置锚点和恢复框架来更改视图层的锚点,而无需移动视图。
在自动布局的世界里,我们不再设置框架,但是约束似乎不能胜任将视图的位置调整回我们想要的位置的任务。您可以破解约束来重新定位视图,但在旋转或其他调整大小事件时,这些约束又会变得无效。
下面这个聪明的想法不起作用,因为它创建了一个“无效的布局属性配对(左边和宽度)”:
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]];
我在这里的意图是设置 layerView
的左边缘,调整锚点的视图,其宽度的一半加上20(距离我想插入左边缘的超视图)。
是否可以在使用自动布局布局的视图中更改锚点,而不更改视图的位置?是否需要使用硬编码值并在每次旋转时编辑约束?希望不会。
我需要更改锚点,以便在对视图应用转换时获得正确的视觉效果。