Iphone 在Interface Builder中创建UIView,该UIView在添加为子视图时自动居中

Iphone 在Interface Builder中创建UIView,该UIView在添加为子视图时自动居中,iphone,cocoa-touch,uikit,interface-builder,Iphone,Cocoa Touch,Uikit,Interface Builder,我在Interface Builder中创建了一个UIView xib,并尽我所能指示UIView应该将自身居中、将自身固定在中心、将自身定位在中心坐标等 但是,每当我在代码中将其添加为子视图时,我还必须通过编程方式使用CGRectMake()设置其框架,否则它将始终添加到其父视图的左上角。重新构建它的数学是毫无意义和丑陋的,所以我想我只是没有正确地在IB检查器中玩弄一点 有人能确认这是可能的吗?如果是,我需要在IB中做些什么来实现这一点?在IB中居中但保持大小是不可能的。尽管居中但保持其sup

我在Interface Builder中创建了一个UIView xib,并尽我所能指示UIView应该将自身居中、将自身固定在中心、将自身定位在中心坐标等

但是,每当我在代码中将其添加为子视图时,我还必须通过编程方式使用
CGRectMake()
设置其框架,否则它将始终添加到其父视图的左上角。重新构建它的数学是毫无意义和丑陋的,所以我想我只是没有正确地在IB检查器中玩弄一点


有人能确认这是可能的吗?如果是,我需要在IB中做些什么来实现这一点?

在IB中居中但保持大小是不可能的。尽管居中但保持其superview的边距是可行的


您必须覆盖LayoutSubview消息,或者只保留您编写的计算代码。

为什么不将刚刚添加的子视图的中心设置为将superview的宽度和高度减半所创建的点


或者用IB定义视图要进入的矩形(我想象一个容器视图),并简单地设置要添加到containerView.bounds的视图的框架(bounds是一个独立于位置的值,因此x、y将为0,而size将等于容器大小。

Justin Searls:错误不是IB的。
autoresizingMask
只适用于调整视图的superview的大小;掩码定义了这对视图的影响。如果还没有superview,则没有“居中”,因为“居中”指视图在其superview中的位置。在视图具有可居中的superview之前,无法保持视图居中,这是自动调整大小掩码所做的。因此,当您自己将视图放入superview时,您需要自己调整其框架。@JustinSearls Windows窗体和WPF GUI类显示自动调整大小ng的容量几乎相同。甚至比自己将宽度和高度减半更容易:
CGRectGetMidX
CGRectGetMidY
。虽然从技术上讲是正确的,但实际上,与CGRectGetMidX(self.bounds)相比,键入self.bounds.width/2要少一些!不过,苹果函数可能做得稍微聪明一些。