当它有一些约束时更改 uiview 框架

change the uiview frame when it has some constraints

主视图上有一个子视图(UIView),我想改变子视图(_test)的大小。

_test 有两个约束:

  1. 顶space到主视图:20
  2. 尾随 space 到主视图:136

当我想改变_test(子视图)的大小时,但这似乎不起作用:

self._test.frame = CGRectMake(self._test.frame.origin.x + 10, 
                              self._test.frame.origin.y, 
                              self._test.frame.size.width - 10, 
                              self._test.frame.size.height);

我认为这是因为限制,但是,我该怎么做呢?

_test has two constraints:

top space to main view: 20

trailling space to main view: 136

嗯,这是你的第一个问题。如果这真的是一个通用的 UIView,那么约束还不够。如果您要完全使用约束,则必须完全确定 视图的位置和大小,而您没有做到这一点。因此,您的约束无效。

一旦您的约束生效,那么您确实将面临无法通过 frame 设置视图的位置和大小的事实。设置 frame 和使用约束是互斥的!如果你打算使用约束来定位和调整这个东西的大小,那么要重新定位或调整它的大小你必须改变它的 constraints,而不是它的 frame.