我有一个可以旋转的应用程序,所以我需要处理纵向和横向。此外,用户将被允许使用捏合手势来改变视图的比例。这是视图的基本层次结构。
mainView 是 self.view 的子视图(来自主视图控制器的上下文)。它是一个 UIImageView,虽然它的图像部分相对不重要。在任何情况下,这是本讨论中的其余视图作为子视图放置的视图。
第一个是我所说的董事会。它是用户组装哪些项目的视图。这些项目本身就是图像视图。
此外,还有我所说的调色板。这些只是可以由用户调整大小和缩放的视图。此外,刚刚提到的图像视图可以从一个调色板拖到另一个调色板或板上。调色板可以被认为是用户的工作空间。当他们完成他们的工作时,他们将他们的组件放在板上。
到目前为止,我一直在使用应用程序,其中板是自动布局的一部分,但调色板是根据需要以编程方式创建的。这很好,因为当用户旋转设备时,自动布局会自动适当地放置电路板。至少在我想给它添加捏缩放之前它是这样的。
自动布局在界面生成器中设置了以下约束:前导、顶部、尾随和底部都设置为超级视图默认值。
当用户缩放视图时,结果是它有点粘在屏幕的左上角。我宁愿让它保留中心。
我尝试通过将以下代码添加到此视图的捏合手势识别器来以编程方式更改此设置:
if (self.pinchView.tag == TAGBOARD) {
[NSLayoutConstraint constraintWithItem:self.pinchView
attribute:NSLayoutAttributeCenterX
relatedBy:NSLayoutRelationEqual
toItem:self.mainView
attribute:NSLayoutAttributeCenterX
multiplier:1.0
constant:0];
}
但这似乎无济于事。我猜这是因为它与 IB 约束冲突。我还能做些什么来使用自动布局来完成这项工作吗?还是应该像处理其他视图一样以编程方式完成所有操作?
在此代码示例中,self.pinchView 是应用了捏合手势的视图。为便于讨论,我将其称为董事会。self.mainView 视图是它的父视图。