iOS自动布局重置我所有的图像位置
Posted
技术标签:
【中文标题】iOS自动布局重置我所有的图像位置【英文标题】:iOS Auto Layout reseting all my image positions 【发布时间】:2014-01-16 06:08:00 【问题描述】:我的整个程序都有一个视图控制器,我的程序由动态图像组成。问题在于当人们点击一个 iAd 横幅时,它似乎称为自动布局,所以自动布局的作用是自动布局我的图像,因为我在故事板中设置了它们如何避免这种情况发生?现在我明白,如果我取消选中自动布局,问题将得到解决,但问题是我想在检测到 4 英寸屏幕时坚持使用自动布局来调整大小
【问题讨论】:
【参考方案1】:假设您正在通过设置图像的frame
属性来移动图像。不要在自动布局下这样做;一旦另一个布局传递发生,框架将被重置为约束值。
您需要通过编辑约束来更改子视图的位置,方法是更改 constant
属性或删除和替换整个约束。
【讨论】:
我删除了我在移动图像中的所有约束,但是当另一个布局传递发生时它仍然移动它们我现在将尝试弄乱常量属性【参考方案2】:我自己也遇到过同样的问题,在为了 ios 5 支持而避开自动布局多年后,我第一次涉足自动布局。这个页面帮我解决了这个问题:http://matthewmorey.com/creating-uiviews-programmatically-with-auto-layout/
在 viewDidLoad 中我最终调用了这个:
for( NSLayoutConstraint* constraint in self.view.constraints )
[self.view removeConstraint: constraint];
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:self.viewToCenter
attribute:NSLayoutAttributeCenterX
relatedBy:NSLayoutRelationEqual
toItem:self.view
attribute:NSLayoutAttributeLeft
multiplier:1.0
constant:center.x]];
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:self.viewToCenter
attribute:NSLayoutAttributeCenterY
relatedBy:NSLayoutRelationEqual
toItem:self.view
attribute:NSLayoutAttributeTop
multiplier:1.0
constant:center.y]];
基本上,它会删除任何先前设置的约束(因为我会定期使用新的居中约束对其进行更新),然后添加新的约束以将其居中在正确的位置。所以我得到了这个 self.viewToCenter ,它从上面代码设置的 self.view 的左上角得到它的偏移量。
【讨论】:
以上是关于iOS自动布局重置我所有的图像位置的主要内容,如果未能解决你的问题,请参考以下文章