2015-10-07 60 views
0

我有一个UIView子类(用于处理拖放操作),并使用界面构建我添加了两个子视图:UIImageViewUILabel更新超视图帧更改后子视图的约束

两者都有限制:

UIImageView边框搭配,以填补所有可用空间的上海华边界。 UILabel居中垂直和水平。

在这里你可以看到三个(superview背景是绿色的)。当我动画在上海华一帧变化

enter image description here

我的问题就来了。超级观点看起来不错,但其子视图变得疯狂。

在这里,你可以看到它(忽略棕色方形,是从另一个视图)

enter image description here

正如你所看到的,子视图“秋天”,从上海华盈,尽管我打电话updateConstraints每个子视图。

我知道将AutoLayout与setFrame混合是一种糟糕的做法,但这是我知道这样做的唯一方法。

谢谢

+0

为什么不移除superview并将UIImageView的背景设置为绿色?然后使用正确的contentmode正确的尺寸图像,看到这个问题:http://stackoverflow.com/questions/4895272/difference-between-uiviewcontentmodescaleaspectfit-and-uiviewcontentmodescaletof –

+0

我试过了,但后来我无法将UILabel设置为UIImageView的子视图。此外,绿色只是暂时的。 – WedgeSparda

+1

您可能包含源代码吗?你所描述的行为是预期会发生的事情。需要考虑的几件事情:在控制台运行时是否收到任何警告?如果约束无法解决,有些将被销毁,您会在日志中发出警报。除非实际修改它们,否则不应在子视图上调用“-updateConstraints”。在你的情况下,这听起来不是必要的。你如何处理拖动视图的位置?如果视图的位置有约束,但是您修改了框架,则可能会发生意外的行为 –

回答

0

感谢评论我做了一些改变。

1)使用UIImageView更改超级视图(绿色)。

2)删除UILabel并使用CATextLayer放置文本,使用this answer将文本垂直放置在UIImageView的前面。

现在它工作正常。谢谢您的帮助。